diff options
-rw-r--r-- | src/CellBuffer.cxx | 8 | ||||
-rw-r--r-- | src/CellBuffer.h | 1 | ||||
-rw-r--r-- | src/Document.cxx | 189 | ||||
-rw-r--r-- | src/Document.h | 7 | ||||
-rw-r--r-- | src/EditView.cxx | 88 | ||||
-rw-r--r-- | src/Editor.cxx | 688 | ||||
-rw-r--r-- | src/Editor.h | 8 | ||||
-rw-r--r-- | src/MarginView.cxx | 2 | ||||
-rw-r--r-- | src/ScintillaBase.cxx | 22 | ||||
-rw-r--r-- | win32/ScintillaWin.cxx | 26 |
10 files changed, 521 insertions, 518 deletions
diff --git a/src/CellBuffer.cxx b/src/CellBuffer.cxx index 697d75b54..177aa60e8 100644 --- a/src/CellBuffer.cxx +++ b/src/CellBuffer.cxx @@ -381,6 +381,10 @@ char CellBuffer::CharAt(Sci::Position position) const { return substance.ValueAt(position); } +unsigned char CellBuffer::UCharAt(Sci::Position position) const { + return static_cast<unsigned char>(substance.ValueAt(position)); +} + void CellBuffer::GetCharRange(char *buffer, Sci::Position position, Sci::Position lengthRetrieve) const { if (lengthRetrieve <= 0) return; @@ -424,7 +428,7 @@ const char *CellBuffer::RangePointer(Sci::Position position, Sci::Position range } Sci::Position CellBuffer::GapPosition() const { - return static_cast<Sci::Position>(substance.GapPosition()); + return substance.GapPosition(); } // The char* returned is to an allocation owned by the undo history @@ -493,7 +497,7 @@ const char *CellBuffer::DeleteChars(Sci::Position position, Sci::Position delete } Sci::Position CellBuffer::Length() const { - return static_cast<Sci::Position>(substance.Length()); + return substance.Length(); } void CellBuffer::Allocate(Sci::Position newSize) { diff --git a/src/CellBuffer.h b/src/CellBuffer.h index 935ea6e69..065c73795 100644 --- a/src/CellBuffer.h +++ b/src/CellBuffer.h @@ -135,6 +135,7 @@ public: /// Retrieving positions outside the range of the buffer works and returns 0 char CharAt(Sci::Position position) const; + unsigned char UCharAt(Sci::Position position) const; void GetCharRange(char *buffer, Sci::Position position, Sci::Position lengthRetrieve) const; char StyleAt(Sci::Position position) const; void GetStyleRange(unsigned char *buffer, Sci::Position position, Sci::Position lengthRetrieve) const; diff --git a/src/Document.cxx b/src/Document.cxx index 595c4ba9a..b0efee5e7 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -53,7 +53,7 @@ void LexInterface::Colourise(Sci::Position start, Sci::Position end) { // code looks for child lines which may trigger styling. performingStyle = true; - const Sci::Position lengthDoc = static_cast<Sci::Position>(pdoc->Length()); + const Sci::Position lengthDoc = pdoc->Length(); if (end == -1) end = lengthDoc; const Sci::Position len = end - start; @@ -290,7 +290,7 @@ Sci::Line Document::MarkerNext(Sci::Line lineStart, int mask) const { int Document::AddMark(Sci::Line line, int markerNum) { if (line >= 0 && line <= LinesTotal()) { const int prev = Markers()->AddMark(line, markerNum, LinesTotal()); - const DocModification mh(SC_MOD_CHANGEMARKER, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, line); + const DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line); NotifyModified(mh); return prev; } else { @@ -307,13 +307,13 @@ void Document::AddMarkSet(Sci::Line line, int valueSet) { if (m & 1) Markers()->AddMark(line, i, LinesTotal()); } - const DocModification mh(SC_MOD_CHANGEMARKER, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, line); + const DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line); NotifyModified(mh); } void Document::DeleteMark(Sci::Line line, int markerNum) { Markers()->DeleteMark(line, markerNum, false); - const DocModification mh(SC_MOD_CHANGEMARKER, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, line); + const DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line); NotifyModified(mh); } @@ -353,12 +353,12 @@ Sci_Position SCI_METHOD Document::LineEnd(Sci_Position line) const { if (line >= LinesTotal() - 1) { return LineStart(line + 1); } else { - Sci::Position position = static_cast<Sci::Position>(LineStart(line + 1)); + Sci::Position position = LineStart(line + 1); if (SC_CP_UTF8 == dbcsCodePage) { const unsigned char bytes[] = { - static_cast<unsigned char>(cb.CharAt(position-3)), - static_cast<unsigned char>(cb.CharAt(position-2)), - static_cast<unsigned char>(cb.CharAt(position-1)), + cb.UCharAt(position-3), + cb.UCharAt(position-2), + cb.UCharAt(position-1), }; if (UTF8IsSeparator(bytes)) { return position - UTF8SeparatorLength; @@ -384,11 +384,16 @@ void SCI_METHOD Document::SetErrorStatus(int status) { } Sci_Position SCI_METHOD Document::LineFromPosition(Sci_Position pos) const { - return cb.LineFromPosition(static_cast<Sci::Position>(pos)); + return cb.LineFromPosition(pos); +} + +Sci::Line Document::SciLineFromPosition(Sci::Position pos) const { + // Avoids casting in callers for this very common function + return cb.LineFromPosition(pos); } Sci::Position Document::LineEndPosition(Sci::Position position) const { - return static_cast<Sci::Position>(LineEnd(LineFromPosition(position))); + return LineEnd(LineFromPosition(position)); } bool Document::IsLineEndPosition(Sci::Position position) const { @@ -400,9 +405,9 @@ bool Document::IsPositionInLineEnd(Sci::Position position) const { } Sci::Position Document::VCHomePosition(Sci::Position position) const { - const Sci::Line line = static_cast<Sci::Line>(LineFromPosition(position)); - const Sci::Position startPosition = static_cast<Sci::Position>(LineStart(line)); - const Sci::Position endLine = static_cast<Sci::Position>(LineEnd(line)); + const Sci::Line line = SciLineFromPosition(position); + const Sci::Position startPosition = LineStart(line); + const Sci::Position endLine = LineEnd(line); Sci::Position startText = startPosition; while (startText < endLine && (cb.CharAt(startText) == ' ' || cb.CharAt(startText) == '\t')) startText++; @@ -416,7 +421,7 @@ int SCI_METHOD Document::SetLevel(Sci_Position line, int level) { const int prev = Levels()->SetLevel(static_cast<Sci::Line>(line), level, LinesTotal()); if (prev != level) { DocModification mh(SC_MOD_CHANGEFOLD | SC_MOD_CHANGEMARKER, - static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, static_cast<Sci::Line>(line)); + LineStart(line), 0, 0, 0, static_cast<Sci::Line>(line)); mh.foldLevelNow = level; mh.foldLevelPrev = prev; NotifyModified(mh); @@ -446,7 +451,7 @@ Sci::Line Document::GetLastChild(Sci::Line lineParent, int level, Sci::Line last const Sci::Line lookLastLine = (lastLine != -1) ? std::min(LinesTotal() - 1, lastLine) : -1; Sci::Line lineMaxSubord = lineParent; while (lineMaxSubord < maxLine - 1) { - EnsureStyledTo(static_cast<Sci::Position>(LineStart(lineMaxSubord + 2))); + EnsureStyledTo(LineStart(lineMaxSubord + 2)); if (!IsSubordinate(level, GetLevel(lineMaxSubord + 1))) break; if ((lookLastLine != -1) && (lineMaxSubord >= lookLastLine) && !(GetLevel(lineMaxSubord) & SC_FOLDLEVELWHITEFLAG)) @@ -552,7 +557,7 @@ void Document::GetHighlightDelimiters(HighlightDelimiter &highlightDelimiter, Sc } Sci::Position Document::ClampPositionIntoDocument(Sci::Position pos) const { - return std::clamp(pos, static_cast<Sci::Position>(0), static_cast<Sci::Position>(Length())); + return std::clamp(pos, static_cast<Sci::Position>(0), Length()); } bool Document::IsCrLf(Sci::Position pos) const { @@ -569,9 +574,9 @@ int Document::LenChar(Sci::Position pos) { } else if (IsCrLf(pos)) { return 2; } else if (SC_CP_UTF8 == dbcsCodePage) { - const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(pos)); + const unsigned char leadByte = cb.UCharAt(pos); const int widthCharBytes = UTF8BytesOfLead[leadByte]; - const Sci::Position lengthDoc = static_cast<Sci::Position>(Length()); + const Sci::Position lengthDoc = Length(); if ((pos + widthCharBytes) > lengthDoc) return static_cast<int>(lengthDoc - pos); else @@ -585,11 +590,11 @@ int Document::LenChar(Sci::Position pos) { bool Document::InGoodUTF8(Sci::Position pos, Sci::Position &start, Sci::Position &end) const { Sci::Position trail = pos; - while ((trail>0) && (pos-trail < UTF8MaxBytes) && UTF8IsTrailByte(static_cast<unsigned char>(cb.CharAt(trail-1)))) + while ((trail>0) && (pos-trail < UTF8MaxBytes) && UTF8IsTrailByte(cb.UCharAt(trail-1))) trail--; start = (trail > 0) ? trail-1 : trail; - const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(start)); + const unsigned char leadByte = cb.UCharAt(start); const int widthCharBytes = UTF8BytesOfLead[leadByte]; if (widthCharBytes == 1) { return false; @@ -600,8 +605,8 @@ bool Document::InGoodUTF8(Sci::Position pos, Sci::Position &start, Sci::Position // pos too far from lead return false; char charBytes[UTF8MaxBytes] = {static_cast<char>(leadByte),0,0,0}; - for (int b=1; b<widthCharBytes && ((start+b) < Length()); b++) - charBytes[b] = cb.CharAt(static_cast<Sci::Position>(start+b)); + for (Sci::Position b=1; b<widthCharBytes && ((start+b) < Length()); b++) + charBytes[b] = cb.CharAt(start+b); const int utf8status = UTF8Classify(reinterpret_cast<const unsigned char *>(charBytes), widthCharBytes); if (utf8status & UTF8MaskInvalid) return false; @@ -621,7 +626,7 @@ Sci::Position Document::MovePositionOutsideChar(Sci::Position pos, Sci::Position if (pos <= 0) return 0; if (pos >= Length()) - return static_cast<Sci::Position>(Length()); + return Length(); // PLATFORM_ASSERT(pos > 0 && pos < Length()); if (checkLineEnd && IsCrLf(pos - 1)) { @@ -633,7 +638,7 @@ Sci::Position Document::MovePositionOutsideChar(Sci::Position pos, Sci::Position if (dbcsCodePage) { if (SC_CP_UTF8 == dbcsCodePage) { - const unsigned char ch = static_cast<unsigned char>(cb.CharAt(pos)); + const unsigned char ch = cb.UCharAt(pos); // If ch is not a trail byte then pos is valid intercharacter position if (UTF8IsTrailByte(ch)) { Sci::Position startUTF = pos; @@ -650,7 +655,7 @@ Sci::Position Document::MovePositionOutsideChar(Sci::Position pos, Sci::Position } else { // Anchor DBCS calculations at start of line because start of line can // not be a DBCS trail byte. - const Sci::Position posStartLine = static_cast<Sci::Position>(LineStart(LineFromPosition(pos))); + const Sci::Position posStartLine = LineStart(LineFromPosition(pos)); if (pos == posStartLine) return pos; @@ -688,13 +693,13 @@ Sci::Position Document::NextPosition(Sci::Position pos, int moveDir) const { if (pos + increment <= 0) return 0; if (pos + increment >= Length()) - return static_cast<Sci::Position>(Length()); + return Length(); if (dbcsCodePage) { if (SC_CP_UTF8 == dbcsCodePage) { if (increment == 1) { // Simple forward movement case so can avoid some checks - const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(pos)); + const unsigned char leadByte = cb.UCharAt(pos); if (UTF8IsAscii(leadByte)) { // Single byte character or invalid pos++; @@ -702,7 +707,7 @@ Sci::Position Document::NextPosition(Sci::Position pos, int moveDir) const { const int widthCharBytes = UTF8BytesOfLead[leadByte]; char charBytes[UTF8MaxBytes] = {static_cast<char>(leadByte),0,0,0}; for (int b=1; b<widthCharBytes; b++) - charBytes[b] = cb.CharAt(static_cast<int>(pos+b)); + charBytes[b] = cb.CharAt(pos+b); const int utf8status = UTF8Classify(reinterpret_cast<const unsigned char *>(charBytes), widthCharBytes); if (utf8status & UTF8MaskInvalid) pos++; @@ -712,7 +717,7 @@ Sci::Position Document::NextPosition(Sci::Position pos, int moveDir) const { } else { // Examine byte before position pos--; - const unsigned char ch = static_cast<unsigned char>(cb.CharAt(pos)); + const unsigned char ch = cb.UCharAt(pos); // If ch is not a trail byte then pos is valid intercharacter position if (UTF8IsTrailByte(ch)) { // If ch is a trail byte in a valid UTF-8 character then return start of character @@ -729,11 +734,11 @@ Sci::Position Document::NextPosition(Sci::Position pos, int moveDir) const { const int mbsize = IsDBCSLeadByte(cb.CharAt(pos)) ? 2 : 1; pos += mbsize; if (pos > Length()) - pos = static_cast<Sci::Position>(Length()); + pos = Length(); } else { // Anchor DBCS calculations at start of line because start of line can // not be a DBCS trail byte. - const Sci::Position posStartLine = static_cast<Sci::Position>(LineStart(LineFromPosition(pos))); + const Sci::Position posStartLine = LineStart(LineFromPosition(pos)); // See http://msdn.microsoft.com/en-us/library/cc194792%28v=MSDN.10%29.aspx // http://msdn.microsoft.com/en-us/library/cc194790.aspx if ((pos - 1) <= posStartLine) { @@ -775,7 +780,7 @@ Document::CharacterExtracted Document::CharacterAfter(Sci::Position position) co if (position >= Length()) { return CharacterExtracted(unicodeReplacementChar, 0); } - const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(position)); + const unsigned char leadByte = cb.UCharAt(position); if (!dbcsCodePage || UTF8IsAscii(leadByte)) { // Common case: ASCII character return CharacterExtracted(leadByte, 1); @@ -784,7 +789,7 @@ Document::CharacterExtracted Document::CharacterAfter(Sci::Position position) co const int widthCharBytes = UTF8BytesOfLead[leadByte]; unsigned char charBytes[UTF8MaxBytes] = { leadByte, 0, 0, 0 }; for (int b = 1; b<widthCharBytes; b++) - charBytes[b] = static_cast<unsigned char>(cb.CharAt(position + b)); + charBytes[b] = cb.UCharAt(position + b); const int utf8status = UTF8Classify(charBytes, widthCharBytes); if (utf8status & UTF8MaskInvalid) { // Treat as invalid and use up just one byte @@ -794,7 +799,7 @@ Document::CharacterExtracted Document::CharacterAfter(Sci::Position position) co } } else { if (IsDBCSLeadByte(leadByte) && ((position + 1) < Length())) { - return CharacterExtracted::DBCS(leadByte, static_cast<unsigned char>(cb.CharAt(position + 1))); + return CharacterExtracted::DBCS(leadByte, cb.UCharAt(position + 1)); } else { return CharacterExtracted(leadByte, 1); } @@ -805,7 +810,7 @@ Document::CharacterExtracted Document::CharacterBefore(Sci::Position position) c if (position <= 0) { return CharacterExtracted(unicodeReplacementChar, 0); } - const unsigned char previousByte = static_cast<unsigned char>(cb.CharAt(position - 1)); + const unsigned char previousByte = cb.UCharAt(position - 1); if (0 == dbcsCodePage) { return CharacterExtracted(previousByte, 1); } @@ -823,7 +828,7 @@ Document::CharacterExtracted Document::CharacterBefore(Sci::Position position) c const int widthCharBytes = static_cast<int>(endUTF - startUTF); unsigned char charBytes[UTF8MaxBytes] = { 0, 0, 0, 0 }; for (int b = 0; b<widthCharBytes; b++) - charBytes[b] = static_cast<unsigned char>(cb.CharAt(startUTF + b)); + charBytes[b] = cb.UCharAt(startUTF + b); const int utf8status = UTF8Classify(charBytes, widthCharBytes); if (utf8status & UTF8MaskInvalid) { // Treat as invalid and use up just one byte @@ -844,7 +849,7 @@ Document::CharacterExtracted Document::CharacterBefore(Sci::Position position) c // Return -1 on out-of-bounds Sci_Position SCI_METHOD Document::GetRelativePosition(Sci_Position positionStart, Sci_Position characterOffset) const { - Sci::Position pos = static_cast<Sci::Position>(positionStart); + Sci::Position pos = positionStart; if (dbcsCodePage) { const int increment = (characterOffset > 0) ? 1 : -1; while (characterOffset != 0) { @@ -855,7 +860,7 @@ Sci_Position SCI_METHOD Document::GetRelativePosition(Sci_Position positionStart characterOffset -= increment; } } else { - pos = static_cast<Sci::Position>(positionStart + characterOffset); + pos = positionStart + characterOffset; if ((pos < 0) || (pos > Length())) return INVALID_POSITION; } @@ -887,8 +892,7 @@ int SCI_METHOD Document::GetCharacterAndWidth(Sci_Position position, Sci_Positio int character; int bytesInCharacter = 1; if (dbcsCodePage) { - const unsigned char leadByte = static_cast<unsigned char>( - cb.CharAt(static_cast<Sci::Position>(position))); + const unsigned char leadByte = cb.UCharAt(position); if (SC_CP_UTF8 == dbcsCodePage) { if (UTF8IsAscii(leadByte)) { // Single byte character or invalid @@ -897,8 +901,7 @@ int SCI_METHOD Document::GetCharacterAndWidth(Sci_Position position, Sci_Positio const int widthCharBytes = UTF8BytesOfLead[leadByte]; unsigned char charBytes[UTF8MaxBytes] = {leadByte,0,0,0}; for (int b=1; b<widthCharBytes; b++) - charBytes[b] = static_cast<unsigned char>( - cb.CharAt(static_cast<Sci::Position>(position+b))); + charBytes[b] = cb.UCharAt(position+b); const int utf8status = UTF8Classify(charBytes, widthCharBytes); if (utf8status & UTF8MaskInvalid) { // Report as singleton surrogate values which are invalid Unicode @@ -911,14 +914,13 @@ int SCI_METHOD Document::GetCharacterAndWidth(Sci_Position position, Sci_Positio } else { if (IsDBCSLeadByte(leadByte)) { bytesInCharacter = 2; - character = (leadByte << 8) | static_cast<unsigned char>( - cb.CharAt(static_cast<Sci::Position>(position+1))); + character = (leadByte << 8) | cb.UCharAt(position+1); } else { character = leadByte; } } } else { - character = cb.CharAt(static_cast<Sci::Position>(position)); + character = cb.CharAt(position); } if (pWidth) { *pWidth = bytesInCharacter; @@ -1095,7 +1097,7 @@ Sci::Position Document::InsertString(Sci::Position position, const char *s, Sci: 0, s)); if (insertionSet) { s = insertion.c_str(); - insertLength = static_cast<int>(insertion.length()); + insertLength = insertion.length(); } NotifyModified( DocModification( @@ -1128,8 +1130,8 @@ void Document::ChangeInsertion(const char *s, Sci::Position length) { int SCI_METHOD Document::AddData(const char *data, Sci_Position length) { try { - const Sci::Position position = static_cast<Sci::Position>(Length()); - InsertString(position, data, static_cast<Sci::Position>(length)); + const Sci::Position position = Length(); + InsertString(position, data, length); } catch (std::bad_alloc &) { return SC_STATUS_BADALLOC; } catch (...) { @@ -1326,8 +1328,8 @@ static std::string CreateIndentation(Sci::Position indent, int tabSize, bool ins int SCI_METHOD Document::GetLineIndentation(Sci_Position line) { int indent = 0; if ((line >= 0) && (line < LinesTotal())) { - const Sci::Position lineStart = static_cast<Sci::Position>(LineStart(line)); - const Sci::Position length = static_cast<Sci::Position>(Length()); + const Sci::Position lineStart = LineStart(line); + const Sci::Position length = Length(); for (Sci::Position i = lineStart; i < length; i++) { const char ch = cb.CharAt(i); if (ch == ' ') @@ -1347,12 +1349,12 @@ Sci::Position Document::SetLineIndentation(Sci::Line line, Sci::Position indent) indent = 0; if (indent != indentOfLine) { std::string linebuf = CreateIndentation(indent, tabInChars, !useTabs); - const Sci::Position thisLineStart = static_cast<Sci::Position>(LineStart(line)); + const Sci::Position thisLineStart = LineStart(line); const Sci::Position indentPos = GetLineIndentPosition(line); UndoGroup ug(this); DeleteChars(thisLineStart, indentPos - thisLineStart); return thisLineStart + InsertString(thisLineStart, linebuf.c_str(), - static_cast<Sci::Position>(linebuf.length())); + linebuf.length()); } else { return GetLineIndentPosition(line); } @@ -1361,8 +1363,8 @@ Sci::Position Document::SetLineIndentation(Sci::Line line, Sci::Position indent) Sci::Position Document::GetLineIndentPosition(Sci::Line line) const { if (line < 0) return 0; - Sci::Position pos = static_cast<Sci::Position>(LineStart(line)); - const Sci::Position length = static_cast<Sci::Position>(Length()); + Sci::Position pos = LineStart(line); + const Sci::Position length = Length(); while ((pos < length) && IsSpaceOrTab(cb.CharAt(pos))) { pos++; } @@ -1371,9 +1373,9 @@ Sci::Position Document::GetLineIndentPosition(Sci::Line line) const { Sci::Position Document::GetColumn(Sci::Position pos) { Sci::Position column = 0; - const Sci::Line line = static_cast<Sci::Line>(LineFromPosition(pos)); + const Sci::Line line = SciLineFromPosition(pos); if ((line >= 0) && (line < LinesTotal())) { - for (Sci::Position i = static_cast<Sci::Position>(LineStart(line)); i < pos;) { + for (Sci::Position i = LineStart(line); i < pos;) { const char ch = cb.CharAt(i); if (ch == '\t') { column = NextTab(column, tabInChars); @@ -1421,7 +1423,7 @@ Sci::Position Document::CountUTF16(Sci::Position startPos, Sci::Position endPos) } Sci::Position Document::FindColumn(Sci::Line line, Sci::Position column) { - Sci::Position position = static_cast<Sci::Position>(LineStart(line)); + Sci::Position position = LineStart(line); if ((line >= 0) && (line < LinesTotal())) { Sci::Position columnCurrent = 0; while ((columnCurrent < column) && (position < Length())) { @@ -1526,10 +1528,10 @@ int Document::Options() const { } bool Document::IsWhiteLine(Sci::Line line) const { - Sci::Position currentChar = static_cast<Sci::Position>(LineStart(line)); - const Sci::Position endLine = static_cast<Sci::Position>(LineEnd(line)); + Sci::Position currentChar = LineStart(line); + const Sci::Position endLine = LineEnd(line); while (currentChar < endLine) { - if (cb.CharAt(currentChar) != ' ' && cb.CharAt(currentChar) != '\t') { + if (!IsSpaceOrTab(cb.CharAt(currentChar))) { return false; } ++currentChar; @@ -1538,7 +1540,7 @@ bool Document::IsWhiteLine(Sci::Line line) const { } Sci::Position Document::ParaUp(Sci::Position pos) const { - Sci::Line line = static_cast<Sci::Line>(LineFromPosition(pos)); + Sci::Line line = SciLineFromPosition(pos); line--; while (line >= 0 && IsWhiteLine(line)) { // skip empty lines line--; @@ -1547,11 +1549,11 @@ Sci::Position Document::ParaUp(Sci::Position pos) const { line--; } line++; - return static_cast<Sci::Position>(LineStart(line)); + return LineStart(line); } Sci::Position Document::ParaDown(Sci::Position pos) const { - Sci::Line line = static_cast<Sci::Line>(LineFromPosition(pos)); + Sci::Line line = SciLineFromPosition(pos); while (line < LinesTotal() && !IsWhiteLine(line)) { // skip non-empty lines line++; } @@ -1559,9 +1561,9 @@ Sci::Position Document::ParaDown(Sci::Position pos) const { line++; } if (line < LinesTotal()) - return static_cast<Sci::Position>(LineStart(line)); + return LineStart(line); else // end of a document - return static_cast<Sci::Position>(LineEnd(line-1)); + return LineEnd(line-1); } bool Document::IsASCIIWordByte(unsigned char ch) const { @@ -1817,7 +1819,7 @@ void Document::SetCaseFolder(CaseFolder *pcf_) { } Document::CharacterExtracted Document::ExtractCharacter(Sci::Position position) const { - const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(position)); + const unsigned char leadByte = cb.UCharAt(position); if (UTF8IsAscii(leadByte)) { // Common case: ASCII character return CharacterExtracted(leadByte, 1); @@ -1825,7 +1827,7 @@ Document::CharacterExtracted Document::ExtractCharacter(Sci::Position position) const int widthCharBytes = UTF8BytesOfLead[leadByte]; unsigned char charBytes[UTF8MaxBytes] = { leadByte, 0, 0, 0 }; for (int b=1; b<widthCharBytes; b++) - charBytes[b] = static_cast<unsigned char>(cb.CharAt(position + b)); + charBytes[b] = cb.UCharAt(position + b); const int utf8status = UTF8Classify(charBytes, widthCharBytes); if (utf8status & UTF8MaskInvalid) { // Treat as invalid and use up just one byte @@ -1900,7 +1902,7 @@ Sci::Position Document::FindText(Sci::Position minPos, Sci::Position maxPos, con size_t indexSearch = 0; bool characterMatches = true; for (;;) { - const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(posIndexDocument)); + const unsigned char leadByte = cb.UCharAt(posIndexDocument); bytes[0] = leadByte; int widthChar = 1; if (!UTF8IsAscii(leadByte)) { @@ -2024,7 +2026,7 @@ int Document::GetCharsOfClass(CharClassify::cc characterClass, unsigned char *bu } void SCI_METHOD Document::StartStyling(Sci_Position position) { - endStyled = static_cast<Sci::Position>(position); + endStyled = position; } bool SCI_METHOD Document::SetStyleFor(Sci_Position length, char style) { @@ -2033,12 +2035,12 @@ bool SCI_METHOD Document::SetStyleFor(Sci_Position length, char style) { } else { enteredStyling++; const Sci::Position prevEndStyled = endStyled; - if (cb.SetStyleFor(static_cast<Sci::Position>(endStyled), static_cast<Sci::Position>(length), style)) { + if (cb.SetStyleFor(endStyled, length, style)) { const DocModification mh(SC_MOD_CHANGESTYLE | SC_PERFORMED_USER, - prevEndStyled, static_cast<Sci::Position>(length)); + prevEndStyled, length); NotifyModified(mh); } - endStyled += static_cast<Sci::Position>(length); + endStyled += length; enteredStyling--; return true; } @@ -2076,8 +2078,8 @@ void Document::EnsureStyledTo(Sci::Position pos) { if ((enteredStyling == 0) && (pos > GetEndStyled())) { IncrementStyleClock(); if (pli && !pli->UseContainerLexing()) { - const Sci::Line lineEndStyled = static_cast<Sci::Line>(LineFromPosition(GetEndStyled())); - const Sci::Position endStyledTo = static_cast<Sci::Position>(LineStart(lineEndStyled)); + const Sci::Line lineEndStyled = SciLineFromPosition(GetEndStyled()); + const Sci::Position endStyledTo = LineStart(lineEndStyled); pli->Colourise(endStyledTo, pos); } else { // Ask the watchers to style, and stop as soon as one responds. @@ -2099,11 +2101,11 @@ void Document::StyleToAdjustingLineDuration(Sci::Position pos) { // Most recent value contributes 25% to smoothed value. const double alpha = 0.25; - const Sci::Line lineFirst = static_cast<Sci::Line>(LineFromPosition(GetEndStyled())); + const Sci::Line lineFirst = SciLineFromPosition(GetEndStyled()); ElapsedTime etStyling; EnsureStyledTo(pos); const double durationStyling = etStyling.Duration(); - const Sci::Line lineLast = static_cast<Sci::Line>(LineFromPosition(GetEndStyled())); + const Sci::Line lineLast = SciLineFromPosition(GetEndStyled()); if (lineLast >= lineFirst + 8) { // Only adjust for styling multiple lines to avoid instability const double durationOneLine = durationStyling / (lineLast - lineFirst); @@ -2134,7 +2136,7 @@ void Document::SetLexInterface(LexInterface *pLexInterface) { int SCI_METHOD Document::SetLineState(Sci_Position line, int state) { const int statePrevious = States()->SetLineState(static_cast<Sci::Line>(line), state); if (state != statePrevious) { - const DocModification mh(SC_MOD_CHANGELINESTATE, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, + const DocModification mh(SC_MOD_CHANGELINESTATE, LineStart(line), 0, 0, 0, static_cast<Sci::Line>(line)); NotifyModified(mh); } @@ -2150,8 +2152,8 @@ Sci::Line Document::GetMaxLineState() const { } void SCI_METHOD Document::ChangeLexerState(Sci_Position start, Sci_Position end) { - const DocModification mh(SC_MOD_LEXERSTATE, static_cast<Sci::Position>(start), - static_cast<Sci::Position>(end-start), 0, 0, 0); + const DocModification mh(SC_MOD_LEXERSTATE, start, + end-start, 0, 0, 0); NotifyModified(mh); } @@ -2163,20 +2165,20 @@ StyledText Document::MarginStyledText(Sci::Line line) const { void Document::MarginSetText(Sci::Line line, const char *text) { Margins()->SetText(line, text); - const DocModification mh(SC_MOD_CHANGEMARGIN, static_cast<Sci::Position>(LineStart(line)), + const DocModification mh(SC_MOD_CHANGEMARGIN, LineStart(line), 0, 0, 0, line); NotifyModified(mh); } void Document::MarginSetStyle(Sci::Line line, int style) { Margins()->SetStyle(line, style); - NotifyModified(DocModification(SC_MOD_CHANGEMARGIN, static_cast<Sci::Position>(LineStart(line)), + NotifyModified(DocModification(SC_MOD_CHANGEMARGIN, LineStart(line), 0, 0, 0, line)); } void Document::MarginSetStyles(Sci::Line line, const unsigned char *styles) { Margins()->SetStyles(line, styles); - NotifyModified(DocModification(SC_MOD_CHANGEMARGIN, static_cast<Sci::Position>(LineStart(line)), + NotifyModified(DocModification(SC_MOD_CHANGEMARGIN, LineStart(line), 0, 0, 0, line)); } @@ -2199,7 +2201,7 @@ void Document::AnnotationSetText(Sci::Line line, const char *text) { const Sci::Line linesBefore = AnnotationLines(line); Annotations()->SetText(line, text); const int linesAfter = AnnotationLines(line); - DocModification mh(SC_MOD_CHANGEANNOTATION, static_cast<Sci::Position>(LineStart(line)), + DocModification mh(SC_MOD_CHANGEANNOTATION, LineStart(line), 0, 0, 0, line); mh.annotationLinesAdded = linesAfter - linesBefore; NotifyModified(mh); @@ -2208,7 +2210,8 @@ void Document::AnnotationSetText(Sci::Line line, const char *text) { void Document::AnnotationSetStyle(Sci::Line line, int style) { Annotations()->SetStyle(line, style); - const DocModification mh(SC_MOD_CHANGEANNOTATION, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, line); + const DocModification mh(SC_MOD_CHANGEANNOTATION, LineStart(line), + 0, 0, 0, line); NotifyModified(mh); } @@ -2240,7 +2243,7 @@ void SCI_METHOD Document::DecorationSetCurrentIndicator(int indicator) { void SCI_METHOD Document::DecorationFillRange(Sci_Position position, int value, Sci_Position fillLength) { const FillResult<Sci::Position> fr = decorations->FillRange( - static_cast<Sci::Position>(position), value, static_cast<Sci::Position>(fillLength)); + position, value, fillLength); if (fr.changed) { const DocModification mh(SC_MOD_CHANGEINDICATOR | SC_PERFORMED_USER, fr.position, fr.fillLength); @@ -2388,7 +2391,7 @@ Sci::Position Document::WordPartLeft(Sci::Position pos) const { Sci::Position Document::WordPartRight(Sci::Position pos) const { CharacterExtracted ceStart = CharacterAfter(pos); - const Sci::Position length = static_cast<Sci::Position>(Length()); + const Sci::Position length = Length(); if (IsWordPartSeparator(ceStart.character)) { while (pos < length && IsWordPartSeparator(CharacterAfter(pos).character)) pos += CharacterAfter(pos).widthBytes; @@ -2540,12 +2543,12 @@ public: startPos = doc->MovePositionOutsideChar(minPos, 1, true); endPos = doc->MovePositionOutsideChar(maxPos, 1, true); - lineRangeStart = static_cast<Sci::Line>(doc->LineFromPosition(startPos)); - lineRangeEnd = static_cast<Sci::Line>(doc->LineFromPosition(endPos)); + lineRangeStart = doc->SciLineFromPosition(startPos); + lineRangeEnd = doc->SciLineFromPosition(endPos); lineRangeBreak = lineRangeEnd + increment; } Range LineRange(Sci::Line line) const { - Range range(static_cast<Sci::Position>(doc->LineStart(line)), static_cast<Sci::Position>(doc->LineEnd(line))); + Range range(doc->LineStart(line), doc->LineEnd(line)); if (increment == 1) { if (line == lineRangeStart) range.start = startPos; @@ -2985,8 +2988,8 @@ Sci::Position BuiltinRegex::FindText(Document *doc, Sci::Position minPos, Sci::P const char searchEndPrev = (*length > 1) ? s[*length - 2] : '\0'; const bool searchforLineEnd = (searchEnd == '$') && (searchEndPrev != '\\'); for (Sci::Line line = resr.lineRangeStart; line != resr.lineRangeBreak; line += resr.increment) { - Sci::Position startOfLine = static_cast<Sci::Position>(doc->LineStart(line)); - Sci::Position endOfLine = static_cast<Sci::Position>(doc->LineEnd(line)); + Sci::Position startOfLine = doc->LineStart(line); + Sci::Position endOfLine = doc->LineEnd(line); if (resr.increment == 1) { if (line == resr.lineRangeStart) { if ((resr.startPos != startOfLine) && searchforLineStart) @@ -3043,7 +3046,7 @@ Sci::Position BuiltinRegex::FindText(Document *doc, Sci::Position minPos, Sci::P const char *BuiltinRegex::SubstituteByPosition(Document *doc, const char *text, Sci::Position *length) { substituted.clear(); - const DocumentIndexer di(doc, static_cast<Sci::Position>(doc->Length())); + const DocumentIndexer di(doc, doc->Length()); search.GrabMatches(di); for (int j = 0; j < *length; j++) { if (text[j] == '\\') { @@ -3089,7 +3092,7 @@ const char *BuiltinRegex::SubstituteByPosition(Document *doc, const char *text, substituted.push_back(text[j]); } } - *length = static_cast<int>(substituted.length()); + *length = substituted.length(); return substituted.c_str(); } diff --git a/src/Document.h b/src/Document.h index d5d0a4d2e..387af74f0 100644 --- a/src/Document.h +++ b/src/Document.h @@ -290,6 +290,7 @@ public: void SCI_METHOD SetErrorStatus(int status) override; Sci_Position SCI_METHOD LineFromPosition(Sci_Position pos) const override; + Sci::Line SciLineFromPosition(Sci::Position pos) const; // Avoids casting LineFromPosition Sci::Position ClampPositionIntoDocument(Sci::Position pos) const; bool ContainsLineEnd(const char *s, Sci::Position length) const { return cb.ContainsLineEnd(s, length); } bool IsCrLf(Sci::Position pos) const; @@ -360,10 +361,10 @@ public: char CharAt(Sci::Position position) const { return cb.CharAt(position); } void SCI_METHOD GetCharRange(char *buffer, Sci_Position position, Sci_Position lengthRetrieve) const override { - cb.GetCharRange(buffer, static_cast<Sci::Position>(position), static_cast<Sci::Position>(lengthRetrieve)); + cb.GetCharRange(buffer, position, lengthRetrieve); } - char SCI_METHOD StyleAt(Sci_Position position) const override { return cb.StyleAt(static_cast<Sci::Position>(position)); } - int StyleIndexAt(Sci_Position position) const { return static_cast<unsigned char>(cb.StyleAt(static_cast<Sci::Position>(position))); } + char SCI_METHOD StyleAt(Sci_Position position) const override { return cb.StyleAt(position); } + int StyleIndexAt(Sci_Position position) const { return static_cast<unsigned char>(cb.StyleAt(position)); } void GetStyleRange(unsigned char *buffer, Sci::Position position, Sci::Position lengthRetrieve) const { cb.GetStyleRange(buffer, position, lengthRetrieve); } diff --git a/src/EditView.cxx b/src/EditView.cxx index acf7b3b84..e9e369e79 100644 --- a/src/EditView.cxx +++ b/src/EditView.cxx @@ -333,10 +333,10 @@ void EditView::RefreshPixMaps(Surface *surfaceWindow, WindowID wid, const ViewSt } LineLayout *EditView::RetrieveLineLayout(Sci::Line lineNumber, const EditModel &model) { - const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineNumber)); - const Sci::Position posLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(lineNumber + 1)); + const Sci::Position posLineStart = model.pdoc->LineStart(lineNumber); + const Sci::Position posLineEnd = model.pdoc->LineStart(lineNumber + 1); PLATFORM_ASSERT(posLineEnd >= posLineStart); - const Sci::Line lineCaret = static_cast<Sci::Line>(model.pdoc->LineFromPosition(model.sel.MainCaret())); + const Sci::Line lineCaret = model.pdoc->SciLineFromPosition(model.sel.MainCaret()); return llc.Retrieve(lineNumber, lineCaret, static_cast<int>(posLineEnd - posLineStart), model.pdoc->GetStyleClock(), model.LinesOnScreen() + 1, model.pdoc->LinesTotal()); @@ -353,8 +353,8 @@ void EditView::LayoutLine(const EditModel &model, Sci::Line line, Surface *surfa PLATFORM_ASSERT(line < model.pdoc->LinesTotal()); PLATFORM_ASSERT(ll->chars != NULL); - const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line)); - Sci::Position posLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(line + 1)); + const Sci::Position posLineStart = model.pdoc->LineStart(line); + Sci::Position posLineEnd = model.pdoc->LineStart(line + 1); // If the line is very long, limit the treatment to a length that should fit in the viewport if (posLineEnd >(posLineStart + ll->maxLineLength)) { posLineEnd = posLineStart + ll->maxLineLength; @@ -362,7 +362,7 @@ void EditView::LayoutLine(const EditModel &model, Sci::Line line, Surface *surfa if (ll->validity == LineLayout::llCheckTextAndStyle) { Sci::Position lineLength = posLineEnd - posLineStart; if (!vstyle.viewEOL) { - lineLength = static_cast<Sci::Position>(model.pdoc->LineEnd(line)) - posLineStart; + lineLength = model.pdoc->LineEnd(line) - posLineStart; } if (lineLength == ll->numCharsInLine) { // See if chars, styles, indicators, are all the same @@ -593,12 +593,12 @@ Point EditView::LocationFromPosition(Surface *surface, const EditModel &model, S Point pt; if (pos.Position() == INVALID_POSITION) return pt; - Sci::Line lineDoc = static_cast<Sci::Line>(model.pdoc->LineFromPosition(pos.Position())); - Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc)); + Sci::Line lineDoc = model.pdoc->SciLineFromPosition(pos.Position()); + Sci::Position posLineStart = model.pdoc->LineStart(lineDoc); if ((pe & peLineEnd) && (lineDoc > 0) && (pos.Position() == posLineStart)) { // Want point at end of first line lineDoc--; - posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc)); + posLineStart = model.pdoc->LineStart(lineDoc); } const Sci::Line lineVisible = model.pcs->DisplayFromDoc(lineDoc); AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model)); @@ -619,7 +619,7 @@ Range EditView::RangeDisplayLine(Surface *surface, const EditModel &model, Sci:: return rangeSubLine; } const Sci::Line lineDoc = model.pcs->DocFromDisplay(lineVisible); - const Sci::Position positionLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc)); + const Sci::Position positionLineStart = model.pdoc->LineStart(lineDoc); AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model)); if (surface && ll) { LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth); @@ -628,7 +628,7 @@ Range EditView::RangeDisplayLine(Surface *surface, const EditModel &model, Sci:: if (subLine < ll->lines) { rangeSubLine = ll->SubLineRange(subLine); if (subLine == ll->lines-1) { - rangeSubLine.end = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc + 1)) - + rangeSubLine.end = model.pdoc->LineStart(lineDoc + 1) - positionLineStart; } } @@ -648,8 +648,8 @@ SelectionPosition EditView::SPositionFromLocation(Surface *surface, const EditMo return SelectionPosition(INVALID_POSITION); if (lineDoc >= model.pdoc->LinesTotal()) return SelectionPosition(canReturnInvalid ? INVALID_POSITION : - static_cast<Sci::Position>(model.pdoc->Length())); - const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc)); + model.pdoc->Length()); + const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc); AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model)); if (surface && ll) { LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth); @@ -692,7 +692,7 @@ SelectionPosition EditView::SPositionFromLocation(Surface *surface, const EditMo SelectionPosition EditView::SPositionFromLineX(Surface *surface, const EditModel &model, Sci::Line lineDoc, int x, const ViewStyle &vs) { AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model)); if (surface && ll) { - const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc)); + const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc); LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth); const Range rangeSubLine = ll->SubLineRange(0); const XYPOSITION subLineStart = ll->positions[rangeSubLine.start]; @@ -709,12 +709,12 @@ SelectionPosition EditView::SPositionFromLineX(Surface *surface, const EditModel } Sci::Line EditView::DisplayFromPosition(Surface *surface, const EditModel &model, Sci::Position pos, const ViewStyle &vs) { - const Sci::Line lineDoc = static_cast<Sci::Line>(model.pdoc->LineFromPosition(pos)); + const Sci::Line lineDoc = model.pdoc->SciLineFromPosition(pos); Sci::Line lineDisplay = model.pcs->DisplayFromDoc(lineDoc); AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model)); if (surface && ll) { LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth); - const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc)); + const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc); const Sci::Position posInLine = pos - posLineStart; lineDisplay--; // To make up for first increment ahead. for (int subLine = 0; subLine < ll->lines; subLine++) { @@ -727,11 +727,11 @@ Sci::Line EditView::DisplayFromPosition(Surface *surface, const EditModel &model } Sci::Position EditView::StartEndDisplayLine(Surface *surface, const EditModel &model, Sci::Position pos, bool start, const ViewStyle &vs) { - const Sci::Line line = static_cast<Sci::Line>(model.pdoc->LineFromPosition(pos)); + const Sci::Line line = model.pdoc->SciLineFromPosition(pos); AutoLineLayout ll(llc, RetrieveLineLayout(line, model)); Sci::Position posRet = INVALID_POSITION; if (surface && ll) { - const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line)); + const Sci::Position posLineStart = model.pdoc->LineStart(line); LayoutLine(model, line, surface, vs, ll, model.wrapWidth); const Sci::Position posInLine = pos - posLineStart; if (posInLine <= ll->maxLineLength) { @@ -859,14 +859,14 @@ void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle PRectangle rcLine, Sci::Line line, Sci::Position lineEnd, int xStart, int subLine, XYACCUMULATOR subLineStart, ColourOptional background) { - const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line)); + const Sci::Position posLineStart = model.pdoc->LineStart(line); PRectangle rcSegment = rcLine; const bool lastSubLine = subLine == (ll->lines - 1); XYPOSITION virtualSpace = 0; if (lastSubLine) { const XYPOSITION spaceWidth = vsDraw.styles[ll->EndLineStyle()].spaceWidth; - virtualSpace = model.sel.VirtualSpaceFor(static_cast<Sci::Position>(model.pdoc->LineEnd(line))) * spaceWidth; + virtualSpace = model.sel.VirtualSpaceFor(model.pdoc->LineEnd(line)) * spaceWidth; } const XYPOSITION xEol = static_cast<XYPOSITION>(ll->positions[lineEnd] - subLineStart); @@ -876,9 +876,9 @@ void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle rcSegment.right = xEol + xStart + virtualSpace; surface->FillRectangle(rcSegment, background.isSet ? background : vsDraw.styles[ll->styles[ll->numCharsInLine]].back); if (!hideSelection && ((vsDraw.selAlpha == SC_ALPHA_NOALPHA) || (vsDraw.selAdditionalAlpha == SC_ALPHA_NOALPHA))) { - const SelectionSegment virtualSpaceRange(SelectionPosition(static_cast<Sci::Position>(model.pdoc->LineEnd(line))), - SelectionPosition(static_cast<Sci::Position>(model.pdoc->LineEnd(line)), - model.sel.VirtualSpaceFor(static_cast<Sci::Position>(model.pdoc->LineEnd(line))))); + const SelectionSegment virtualSpaceRange(SelectionPosition(model.pdoc->LineEnd(line)), + SelectionPosition(model.pdoc->LineEnd(line), + model.sel.VirtualSpaceFor(model.pdoc->LineEnd(line)))); for (size_t r = 0; r<model.sel.Count(); r++) { const int alpha = (r == model.sel.Main()) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha; if (alpha == SC_ALPHA_NOALPHA) { @@ -901,7 +901,7 @@ void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle int eolInSelection = 0; int alpha = SC_ALPHA_NOALPHA; if (!hideSelection) { - const Sci::Position posAfterLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(line + 1)); + const Sci::Position posAfterLineEnd = model.pdoc->LineStart(line + 1); eolInSelection = (lastSubLine == true) ? model.sel.InSelectionForEOL(posAfterLineEnd) : 0; alpha = (eolInSelection == 1) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha; } @@ -1038,7 +1038,7 @@ static void DrawIndicator(int indicNum, Sci::Position startPos, Sci::Position en static void DrawIndicators(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll, Sci::Line line, int xStart, PRectangle rcLine, int subLine, Sci::Position lineEnd, bool under, Sci::Position hoverIndicatorPos) { // Draw decorators - const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line)); + const Sci::Position posLineStart = model.pdoc->LineStart(line); const Sci::Position lineStart = ll->LineStart(subLine); const Sci::Position posLineEnd = posLineStart + lineEnd; @@ -1108,14 +1108,14 @@ void EditView::DrawFoldDisplayText(Surface *surface, const EditModel &model, con int eolInSelection = 0; int alpha = SC_ALPHA_NOALPHA; if (!hideSelection) { - const Sci::Position posAfterLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(line + 1)); + const Sci::Position posAfterLineEnd = model.pdoc->LineStart(line + 1); eolInSelection = (subLine == (ll->lines - 1)) ? model.sel.InSelectionForEOL(posAfterLineEnd) : 0; alpha = (eolInSelection == 1) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha; } const XYPOSITION spaceWidth = vsDraw.styles[ll->EndLineStyle()].spaceWidth; const XYPOSITION virtualSpace = model.sel.VirtualSpaceFor( - static_cast<Sci::Position>(model.pdoc->LineEnd(line))) * spaceWidth; + model.pdoc->LineEnd(line)) * spaceWidth; rcSegment.left = xStart + static_cast<XYPOSITION>(ll->positions[ll->numCharsInLine] - subLineStart) + virtualSpace + vsDraw.aveCharWidth; rcSegment.right = rcSegment.left + static_cast<XYPOSITION>(widthFoldDisplayText); @@ -1316,7 +1316,7 @@ void EditView::DrawCarets(Surface *surface, const EditModel &model, const ViewSt const bool drawDrag = model.posDrag.IsValid(); if (hideSelection && !drawDrag) return; - const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc)); + const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc); // For each selection draw for (size_t r = 0; (r<model.sel.Count()) || drawDrag; r++) { const bool mainCaret = r == model.sel.Main(); @@ -1550,12 +1550,12 @@ static void DrawMarkUnderline(Surface *surface, const EditModel &model, const Vi static void DrawTranslucentSelection(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll, Sci::Line line, PRectangle rcLine, int subLine, Range lineRange, int xStart) { if ((vsDraw.selAlpha != SC_ALPHA_NOALPHA) || (vsDraw.selAdditionalAlpha != SC_ALPHA_NOALPHA)) { - const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line)); + const Sci::Position posLineStart = model.pdoc->LineStart(line); const XYACCUMULATOR subLineStart = ll->positions[lineRange.start]; // For each selection draw Sci::Position virtualSpaces = 0; if (subLine == (ll->lines - 1)) { - virtualSpaces = model.sel.VirtualSpaceFor(static_cast<Sci::Position>(model.pdoc->LineEnd(line))); + virtualSpaces = model.sel.VirtualSpaceFor(model.pdoc->LineEnd(line)); } const SelectionPosition posStart(posLineStart + lineRange.start); const SelectionPosition posEnd(posLineStart + lineRange.end, virtualSpaces); @@ -1815,7 +1815,7 @@ void EditView::DrawIndentGuidesOverEmpty(Surface *surface, const EditModel &mode Sci::Line line, Sci::Line lineVisible, PRectangle rcLine, int xStart, int subLine) { if ((vsDraw.viewIndentationGuides == ivLookForward || vsDraw.viewIndentationGuides == ivLookBoth) && (subLine == 0)) { - const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line)); + const Sci::Position posLineStart = model.pdoc->LineStart(line); int indentSpace = model.pdoc->GetLineIndentation(line); int xStartText = static_cast<int>(ll->positions[model.pdoc->GetLineIndentPosition(line) - posLineStart]); @@ -1876,7 +1876,7 @@ void EditView::DrawLine(Surface *surface, const EditModel &model, const ViewStyl // See if something overrides the line background color. const ColourOptional background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret); - const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line)); + const Sci::Position posLineStart = model.pdoc->LineStart(line); const Range lineRange = ll->SubLineRange(subLine); const XYACCUMULATOR subLineStart = ll->positions[lineRange.start]; @@ -1990,7 +1990,7 @@ void EditView::PaintText(Surface *surfaceWindow, const EditModel &model, PRectan SelectionPosition posCaret = model.sel.RangeMain().caret; if (model.posDrag.IsValid()) posCaret = model.posDrag; - const Sci::Line lineCaret = static_cast<Sci::Line>(model.pdoc->LineFromPosition(posCaret.Position())); + const Sci::Line lineCaret = model.pdoc->SciLineFromPosition(posCaret.Position()); PRectangle rcTextArea = rcClient; if (vsDraw.marginInside) { @@ -2060,8 +2060,8 @@ void EditView::PaintText(Surface *surfaceWindow, const EditModel &model, PRectan rcLine.top = static_cast<XYPOSITION>(ypos); rcLine.bottom = static_cast<XYPOSITION>(ypos + vsDraw.lineHeight); - const Range rangeLine(static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc)), - static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc + 1))); + const Range rangeLine(model.pdoc->LineStart(lineDoc), + model.pdoc->LineStart(lineDoc + 1)); // Highlight the current braces if any ll->SetBracesHighlight(rangeLine, model.braces, static_cast<char>(model.bracesMatchStyle), @@ -2150,7 +2150,7 @@ void EditView::FillLineRemainder(Surface *surface, const EditModel &model, const int eolInSelection = 0; int alpha = SC_ALPHA_NOALPHA; if (!hideSelection) { - const Sci::Position posAfterLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(line + 1)); + const Sci::Position posAfterLineEnd = model.pdoc->LineStart(line + 1); eolInSelection = (subLine == (ll->lines - 1)) ? model.sel.InSelectionForEOL(posAfterLineEnd) : 0; alpha = (eolInSelection == 1) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha; } @@ -2260,21 +2260,21 @@ Sci::Position EditView::FormatRange(bool draw, Sci_RangeToFormat *pfr, Surface * vsPrint.Refresh(*surfaceMeasure, model.pdoc->tabInChars); // Recalculate fixedColumnWidth } - const Sci::Line linePrintStart = static_cast<Sci::Line>( - model.pdoc->LineFromPosition(static_cast<int>(pfr->chrg.cpMin))); + const Sci::Line linePrintStart = + model.pdoc->SciLineFromPosition(static_cast<Sci::Position>(pfr->chrg.cpMin)); Sci::Line linePrintLast = linePrintStart + (pfr->rc.bottom - pfr->rc.top) / vsPrint.lineHeight - 1; if (linePrintLast < linePrintStart) linePrintLast = linePrintStart; - const Sci::Line linePrintMax = static_cast<Sci::Line>( - model.pdoc->LineFromPosition(static_cast<int>(pfr->chrg.cpMax))); + const Sci::Line linePrintMax = + model.pdoc->SciLineFromPosition(static_cast<Sci::Position>(pfr->chrg.cpMax)); if (linePrintLast > linePrintMax) linePrintLast = linePrintMax; //Platform::DebugPrintf("Formatting lines=[%0d,%0d,%0d] top=%0d bottom=%0d line=%0d %0d\n", // linePrintStart, linePrintLast, linePrintMax, pfr->rc.top, pfr->rc.bottom, vsPrint.lineHeight, // surfaceMeasure->Height(vsPrint.styles[STYLE_LINENUMBER].font)); - Sci::Position endPosPrint = static_cast<Sci::Position>(model.pdoc->Length()); + Sci::Position endPosPrint = model.pdoc->Length(); if (linePrintLast < model.pdoc->LinesTotal()) - endPosPrint = static_cast<Sci::Position>(model.pdoc->LineStart(linePrintLast + 1)); + endPosPrint = model.pdoc->LineStart(linePrintLast + 1); // Ensure we are styled to where we are formatting. model.pdoc->EnsureStyledTo(endPosPrint); @@ -2316,7 +2316,7 @@ Sci::Position EditView::FormatRange(bool draw, Sci_RangeToFormat *pfr, Surface * // line of the page. if (visibleLine == 0) { const Sci::Position startWithinLine = nPrintPos - - static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc)); + model.pdoc->LineStart(lineDoc); for (int iwl = 0; iwl < ll.lines - 1; iwl++) { if (ll.LineStart(iwl) <= startWithinLine && ll.LineStart(iwl + 1) >= startWithinLine) { visibleLine = -iwl; @@ -2359,7 +2359,7 @@ Sci::Position EditView::FormatRange(bool draw, Sci_RangeToFormat *pfr, Surface * } visibleLine++; if (iwl == ll.lines - 1) - nPrintPos = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc + 1)); + nPrintPos = model.pdoc->LineStart(lineDoc + 1); else nPrintPos += ll.LineStart(iwl + 1) - ll.LineStart(iwl); } diff --git a/src/Editor.cxx b/src/Editor.cxx index ca23b0030..e3e90b5de 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -355,7 +355,7 @@ SelectionPosition Editor::ClampPositionIntoDocument(SelectionPosition sp) const if (sp.Position() < 0) { return SelectionPosition(0); } else if (sp.Position() > pdoc->Length()) { - return SelectionPosition(static_cast<Sci::Position>(pdoc->Length())); + return SelectionPosition(pdoc->Length()); } else { // If not at end of line then set offset to 0 if (!pdoc->IsLineEndPosition(sp.Position())) @@ -416,7 +416,7 @@ Sci::Position Editor::PositionFromLocation(Point pt, bool canReturnInvalid, bool SelectionPosition Editor::SPositionFromLineX(Sci::Line lineDoc, int x) { RefreshStyleData(); if (lineDoc >= pdoc->LinesTotal()) - return SelectionPosition(static_cast<Sci::Position>(pdoc->Length())); + return SelectionPosition(pdoc->Length()); //Platform::DebugPrintf("Position of (%d,%d) line = %d top=%d\n", pt.x, pt.y, line, topLine); AutoSurface surface(this); return view.SPositionFromLineX(surface, *this, lineDoc, x, vs); @@ -435,7 +435,7 @@ void Editor::SetTopLine(Sci::Line topLineNew) { topLine = topLineNew; ContainerNeedsUpdate(SC_UPDATE_V_SCROLL); } - posTopLine = static_cast<Sci::Position>(pdoc->LineStart(pcs->DocFromDisplay(topLine))); + posTopLine = pdoc->LineStart(pcs->DocFromDisplay(topLine)); } /** @@ -498,7 +498,7 @@ void Editor::RedrawSelMargin(Sci::Line line, bool allAfter) { rcMarkers.right = rcMarkers.left + vs.fixedColumnWidth; } if (line != -1) { - PRectangle rcLine = RectangleFromRange(Range(static_cast<Sci::Position>(pdoc->LineStart(line))), 0); + PRectangle rcLine = RectangleFromRange(Range(pdoc->LineStart(line)), 0); // Inflate line rectangle if there are image markers with height larger than line height if (vs.largestMarkerHeight > vs.lineHeight) { @@ -528,9 +528,9 @@ void Editor::RedrawSelMargin(Sci::Line line, bool allAfter) { PRectangle Editor::RectangleFromRange(Range r, int overlap) { const Sci::Line minLine = pcs->DisplayFromDoc( - static_cast<Sci::Line>(pdoc->LineFromPosition(r.First()))); + pdoc->SciLineFromPosition(r.First())); const Sci::Line maxLine = pcs->DisplayLastFromDoc( - static_cast<Sci::Line>(pdoc->LineFromPosition(r.Last()))); + pdoc->SciLineFromPosition(r.Last())); const PRectangle rcClientDrawing = GetClientDrawingRectangle(); PRectangle rc; const int leftTextOverlap = ((xOffset == 0) && (vs.leftMarginWidth > 0)) ? 1 : 0; @@ -572,10 +572,10 @@ void Editor::SetRectangularRange() { if (sel.selType == Selection::selThin) { xCaret = xAnchor; } - const Sci::Line lineAnchorRect = static_cast<Sci::Line>( - pdoc->LineFromPosition(sel.Rectangular().anchor.Position())); - const Sci::Line lineCaret = static_cast<Sci::Line>( - pdoc->LineFromPosition(sel.Rectangular().caret.Position())); + const Sci::Line lineAnchorRect = + pdoc->SciLineFromPosition(sel.Rectangular().anchor.Position()); + const Sci::Line lineCaret = + pdoc->SciLineFromPosition(sel.Rectangular().caret.Position()); const int increment = (lineCaret > lineAnchorRect) ? 1 : -1; for (Sci::Line line=lineAnchorRect; line != lineCaret+increment; line += increment) { SelectionRange range(SPositionFromLineX(line, xCaret), SPositionFromLineX(line, xAnchor)); @@ -629,15 +629,15 @@ void Editor::InvalidateWholeSelection() { at the beginning and end of the region lines. */ SelectionRange Editor::LineSelectionRange(SelectionPosition currentPos_, SelectionPosition anchor_) const { if (currentPos_ > anchor_) { - anchor_ = SelectionPosition(static_cast<Sci::Position>( - pdoc->LineStart(pdoc->LineFromPosition(anchor_.Position())))); - currentPos_ = SelectionPosition(static_cast<Sci::Position>( - pdoc->LineEnd(pdoc->LineFromPosition(currentPos_.Position())))); + anchor_ = SelectionPosition( + pdoc->LineStart(pdoc->LineFromPosition(anchor_.Position()))); + currentPos_ = SelectionPosition( + pdoc->LineEnd(pdoc->LineFromPosition(currentPos_.Position()))); } else { - currentPos_ = SelectionPosition(static_cast<Sci::Position>( - pdoc->LineStart(pdoc->LineFromPosition(currentPos_.Position())))); - anchor_ = SelectionPosition(static_cast<Sci::Position>( - pdoc->LineEnd(pdoc->LineFromPosition(anchor_.Position())))); + currentPos_ = SelectionPosition( + pdoc->LineStart(pdoc->LineFromPosition(currentPos_.Position()))); + anchor_ = SelectionPosition( + pdoc->LineEnd(pdoc->LineFromPosition(anchor_.Position()))); } return SelectionRange(currentPos_, anchor_); } @@ -645,7 +645,7 @@ SelectionRange Editor::LineSelectionRange(SelectionPosition currentPos_, Selecti void Editor::SetSelection(SelectionPosition currentPos_, SelectionPosition anchor_) { currentPos_ = ClampPositionIntoDocument(currentPos_); anchor_ = ClampPositionIntoDocument(anchor_); - const Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(currentPos_.Position())); + const Sci::Line currentLine = pdoc->SciLineFromPosition(currentPos_.Position()); SelectionRange rangeNew(currentPos_, anchor_); if (sel.selType == Selection::selLines) { rangeNew = LineSelectionRange(currentPos_, anchor_); @@ -671,7 +671,7 @@ void Editor::SetSelection(Sci::Position currentPos_, Sci::Position anchor_) { // Just move the caret on the main selection void Editor::SetSelection(SelectionPosition currentPos_) { currentPos_ = ClampPositionIntoDocument(currentPos_); - const Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(currentPos_.Position())); + const Sci::Line currentLine = pdoc->SciLineFromPosition(currentPos_.Position()); if (sel.Count() > 1 || !(sel.RangeMain().caret == currentPos_)) { InvalidateSelection(SelectionRange(currentPos_)); } @@ -699,8 +699,7 @@ void Editor::SetSelection(int currentPos_) { } void Editor::SetEmptySelection(SelectionPosition currentPos_) { - const Sci::Line currentLine = static_cast<Sci::Line>( - pdoc->LineFromPosition(currentPos_.Position())); + const Sci::Line currentLine = pdoc->SciLineFromPosition(currentPos_.Position()); SelectionRange rangeNew(ClampPositionIntoDocument(currentPos_)); if (sel.Count() > 1 || !(sel.RangeMain() == rangeNew)) { InvalidateSelection(rangeNew); @@ -756,9 +755,9 @@ void Editor::MultipleSelectAdd(AddNumber addNumber) { Sci::Position searchStart = it->start; const Sci::Position searchEnd = it->end; for (;;) { - Sci::Position lengthFound = static_cast<Sci::Position>(selectedText.length()); - const Sci::Position pos = static_cast<Sci::Position>(pdoc->FindText(searchStart, searchEnd, - selectedText.c_str(), searchFlags, &lengthFound)); + Sci::Position lengthFound = selectedText.length(); + const Sci::Position pos = pdoc->FindText(searchStart, searchEnd, + selectedText.c_str(), searchFlags, &lengthFound); if (pos >= 0) { sel.AddSelection(SelectionRange(pos + lengthFound, pos)); ScrollRange(sel.RangeMain()); @@ -829,8 +828,7 @@ SelectionPosition Editor::MovePositionOutsideChar(SelectionPosition pos, Sci::Po } void Editor::MovedCaret(SelectionPosition newPos, SelectionPosition previousPos, bool ensureVisible) { - const Sci::Line currentLine = static_cast<Sci::Line>( - pdoc->LineFromPosition(newPos.Position())); + const Sci::Line currentLine = pdoc->SciLineFromPosition(newPos.Position()); if (ensureVisible) { // In case in need of wrapping to ensure DisplayFromDoc works. if (currentLine >= wrapPending.start) { @@ -899,7 +897,7 @@ void Editor::MovePositionTo(Sci::Position newPos, Selection::selTypes selt, bool SelectionPosition Editor::MovePositionSoVisible(SelectionPosition pos, int moveDir) { pos = ClampPositionIntoDocument(pos); pos = MovePositionOutsideChar(pos, moveDir); - const Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(pos.Position())); + const Sci::Line lineDoc = pdoc->SciLineFromPosition(pos.Position()); if (pcs->GetVisible(lineDoc)) { return pos; } else { @@ -907,12 +905,12 @@ SelectionPosition Editor::MovePositionSoVisible(SelectionPosition pos, int moveD if (moveDir > 0) { // lineDisplay is already line before fold as lines in fold use display line of line after fold lineDisplay = std::clamp(lineDisplay, static_cast<Sci::Line>(0), pcs->LinesDisplayed()); - return SelectionPosition(static_cast<Sci::Position>( - pdoc->LineStart(pcs->DocFromDisplay(lineDisplay)))); + return SelectionPosition( + pdoc->LineStart(pcs->DocFromDisplay(lineDisplay))); } else { lineDisplay = std::clamp(lineDisplay - 1, static_cast<Sci::Line>(0), pcs->LinesDisplayed()); - return SelectionPosition(static_cast<Sci::Position>( - pdoc->LineEnd(pcs->DocFromDisplay(lineDisplay)))); + return SelectionPosition( + pdoc->LineEnd(pcs->DocFromDisplay(lineDisplay))); } } } @@ -982,8 +980,8 @@ void Editor::HorizontalScrollTo(int xPos) { } void Editor::VerticalCentreCaret() { - const Sci::Line lineDoc = static_cast<Sci::Line>( - pdoc->LineFromPosition(sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret())); + const Sci::Line lineDoc = + pdoc->SciLineFromPosition(sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret()); const Sci::Line lineDisplay = pcs->DisplayFromDoc(lineDoc); const Sci::Line newTop = lineDisplay - (LinesOnScreen() / 2); if (topLine != newTop) { @@ -992,30 +990,24 @@ void Editor::VerticalCentreCaret() { } } -// Avoid 64 bit compiler warnings. -// Scintilla does not support text buffers larger than 2**31 -static int istrlen(const char *s) { - return static_cast<int>(s ? strlen(s) : 0); -} - void Editor::MoveSelectedLines(int lineDelta) { // if selection doesn't start at the beginning of the line, set the new start Sci::Position selectionStart = SelectionStart().Position(); - const Sci::Line startLine = static_cast<Sci::Line>(pdoc->LineFromPosition(selectionStart)); - const Sci::Position beginningOfStartLine = static_cast<Sci::Position>(pdoc->LineStart(startLine)); + const Sci::Line startLine = pdoc->SciLineFromPosition(selectionStart); + const Sci::Position beginningOfStartLine = pdoc->LineStart(startLine); selectionStart = beginningOfStartLine; // if selection doesn't end at the beginning of a line greater than that of the start, // then set it at the beginning of the next one Sci::Position selectionEnd = SelectionEnd().Position(); - const Sci::Line endLine = static_cast<Sci::Line>(pdoc->LineFromPosition(selectionEnd)); - const Sci::Position beginningOfEndLine = static_cast<Sci::Position>(pdoc->LineStart(endLine)); + const Sci::Line endLine = pdoc->SciLineFromPosition(selectionEnd); + const Sci::Position beginningOfEndLine = pdoc->LineStart(endLine); bool appendEol = false; if (selectionEnd > beginningOfEndLine || selectionStart == selectionEnd) { - selectionEnd = static_cast<Sci::Position>(pdoc->LineStart(endLine + 1)); - appendEol = (selectionEnd == pdoc->Length() && pdoc->LineFromPosition(selectionEnd) == endLine); + selectionEnd = pdoc->LineStart(endLine + 1); + appendEol = (selectionEnd == pdoc->Length() && pdoc->SciLineFromPosition(selectionEnd) == endLine); } // if there's nowhere for the selection to move @@ -1049,12 +1041,12 @@ void Editor::MoveSelectedLines(int lineDelta) { const char *eol = StringFromEOLMode(pdoc->eolMode); if (currentLine + lineDelta >= pdoc->LinesTotal()) - pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), eol, istrlen(eol)); + pdoc->InsertString(pdoc->Length(), eol, strlen(eol)); GoToLine(currentLine + lineDelta); selectionLength = pdoc->InsertString(CurrentPosition(), selectedText.Data(), selectionLength); if (appendEol) { - const Sci::Position lengthInserted = pdoc->InsertString(CurrentPosition() + selectionLength, eol, istrlen(eol)); + const Sci::Position lengthInserted = pdoc->InsertString(CurrentPosition() + selectionLength, eol, strlen(eol)); selectionLength += lengthInserted; } SetSelection(CurrentPosition(), CurrentPosition() + selectionLength); @@ -1077,7 +1069,7 @@ void Editor::MoveCaretInsideView(bool ensureVisible) { false, false, UserVirtualSpace()), Selection::noSel, ensureVisible); } else if ((pt.y + vs.lineHeight - 1) > rcClient.bottom) { - const Sci::Position yOfLastLineFullyDisplayed = static_cast<Sci::Position>(rcClient.top) + (LinesOnScreen() - 1) * vs.lineHeight; + const ptrdiff_t yOfLastLineFullyDisplayed = static_cast<ptrdiff_t>(rcClient.top) + (LinesOnScreen() - 1) * vs.lineHeight; MovePositionTo(SPositionFromLocation( Point::FromInts(lastXChosen - xOffset, static_cast<int>(rcClient.top + yOfLastLineFullyDisplayed)), false, false, UserVirtualSpace()), @@ -1514,7 +1506,7 @@ bool Editor::WrapLines(WrapScope ws) { Sci::Line lineToWrap = wrapPending.start; Sci::Line lineToWrapEnd = std::min(wrapPending.end, pdoc->LinesTotal()); const Sci::Line lineDocTop = pcs->DocFromDisplay(topLine); - const int subLineTop = static_cast<int>(topLine - pcs->DisplayFromDoc(lineDocTop)); + const Sci::Line subLineTop = topLine - pcs->DisplayFromDoc(lineDocTop); if (ws == WrapScope::wsVisible) { lineToWrap = std::clamp(lineDocTop-5, wrapPending.start, pdoc->LinesTotal()); // Priority wrap to just after visible area. @@ -1539,7 +1531,7 @@ bool Editor::WrapLines(WrapScope ws) { lineToWrapEnd = std::min(lineToWrapEnd, lineEndNeedWrap); // Ensure all lines being wrapped are styled. - pdoc->EnsureStyledTo(static_cast<Sci::Position>(pdoc->LineStart(lineToWrapEnd))); + pdoc->EnsureStyledTo(pdoc->LineStart(lineToWrapEnd)); if (lineToWrap < lineToWrapEnd) { @@ -1560,7 +1552,8 @@ bool Editor::WrapLines(WrapScope ws) { lineToWrap++; } - goodTopLine = pcs->DisplayFromDoc(lineDocTop) + std::min(subLineTop, pcs->GetHeight(lineDocTop)-1); + goodTopLine = pcs->DisplayFromDoc(lineDocTop) + std::min( + subLineTop, static_cast<Sci::Line>(pcs->GetHeight(lineDocTop)-1)); } } @@ -1615,27 +1608,26 @@ void Editor::LinesSplit(int pixelWidth) { const PRectangle rcText = GetTextRectangle(); pixelWidth = static_cast<int>(rcText.Width()); } - const Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(targetStart)); - Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(targetEnd)); + const Sci::Line lineStart = pdoc->SciLineFromPosition(targetStart); + Sci::Line lineEnd = pdoc->SciLineFromPosition(targetEnd); const char *eol = StringFromEOLMode(pdoc->eolMode); UndoGroup ug(pdoc); for (Sci::Line line = lineStart; line <= lineEnd; line++) { AutoSurface surface(this); AutoLineLayout ll(view.llc, view.RetrieveLineLayout(line, *this)); if (surface && ll) { - const Sci::Position posLineStart = static_cast<Sci::Position>(pdoc->LineStart(line)); + const Sci::Position posLineStart = pdoc->LineStart(line); view.LayoutLine(*this, line, surface, vs, ll, pixelWidth); Sci::Position lengthInsertedTotal = 0; for (int subLine = 1; subLine < ll->lines; subLine++) { const Sci::Position lengthInserted = pdoc->InsertString( - static_cast<int>(posLineStart + lengthInsertedTotal + - ll->LineStart(subLine)), - eol, istrlen(eol)); + posLineStart + lengthInsertedTotal + ll->LineStart(subLine), + eol, strlen(eol)); targetEnd += lengthInserted; lengthInsertedTotal += lengthInserted; } } - lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(targetEnd)); + lineEnd = pdoc->SciLineFromPosition(targetEnd); } } } @@ -1803,7 +1795,7 @@ int Editor::TextWidth(int style, const char *text) { RefreshStyleData(); AutoSurface surface(this); if (surface) { - return static_cast<int>(surface->WidthText(vs.styles[style].font, text, istrlen(text))); + return static_cast<int>(surface->WidthText(vs.styles[style].font, text, static_cast<int>(strlen(text)))); } else { return 1; } @@ -1852,7 +1844,7 @@ void Editor::ChangeSize() { Sci::Position Editor::RealizeVirtualSpace(Sci::Position position, Sci::Position virtualSpace) { if (virtualSpace > 0) { - const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(position)); + const Sci::Line line = pdoc->SciLineFromPosition(position); const Sci::Position indent = pdoc->GetLineIndentPosition(line); if (indent == position) { return pdoc->SetLineIndentation(line, pdoc->GetLineIndentation(line) + virtualSpace); @@ -1933,7 +1925,7 @@ void Editor::AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS) { if (Wrapping()) { AutoSurface surface(this); if (surface) { - if (WrapOneLine(surface, static_cast<Sci::Line>(pdoc->LineFromPosition(positionInsert)))) { + if (WrapOneLine(surface, pdoc->SciLineFromPosition(positionInsert))) { SetScrollBars(); SetVerticalScrollPos(); Redraw(); @@ -2002,7 +1994,7 @@ void Editor::ClearBeforeTentativeStart() { } } -void Editor::InsertPaste(const char *text, int len) { +void Editor::InsertPaste(const char *text, Sci::Position len) { if (multiPasteMode == SC_MULTIPASTE_ONCE) { SelectionPosition selStart = sel.Start(); selStart = RealizeVirtualSpace(selStart); @@ -2037,25 +2029,25 @@ void Editor::InsertPaste(const char *text, int len) { } } -void Editor::InsertPasteShape(const char *text, int len, PasteShape shape) { +void Editor::InsertPasteShape(const char *text, Sci::Position len, PasteShape shape) { std::string convertedText; if (convertPastes) { // Convert line endings of the paste into our local line-endings mode convertedText = Document::TransformLineEnds(text, len, pdoc->eolMode); - len = static_cast<int>(convertedText.length()); + len = convertedText.length(); text = convertedText.c_str(); } if (shape == pasteRectangular) { PasteRectangular(sel.Start(), text, len); } else { if (shape == pasteLine) { - const Sci::Position insertPos = static_cast<Sci::Position>( - pdoc->LineStart(pdoc->LineFromPosition(sel.MainCaret()))); + const Sci::Position insertPos = + pdoc->LineStart(pdoc->LineFromPosition(sel.MainCaret())); Sci::Position lengthInserted = pdoc->InsertString(insertPos, text, len); // add the newline if necessary if ((len > 0) && (text[len - 1] != '\n' && text[len - 1] != '\r')) { const char *endline = StringFromEOLMode(pdoc->eolMode); - const int length = static_cast<int>(strlen(endline)); + const Sci::Position length = strlen(endline); lengthInserted += pdoc->InsertString(insertPos + lengthInserted, endline, length); } if (sel.MainCaret() == insertPos) { @@ -2091,7 +2083,7 @@ void Editor::ClearAll() { { UndoGroup ug(pdoc); if (0 != pdoc->Length()) { - pdoc->DeleteChars(0, static_cast<Sci::Position>(pdoc->Length())); + pdoc->DeleteChars(0, pdoc->Length()); } if (!pdoc->IsReadOnly()) { pcs->Clear(); @@ -2137,7 +2129,7 @@ void Editor::PasteRectangular(SelectionPosition pos, const char *ptr, Sci::Posit } sel.Clear(); sel.RangeMain() = SelectionRange(pos); - Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret())); + Sci::Line line = pdoc->SciLineFromPosition(sel.MainCaret()); UndoGroup ug(pdoc); sel.RangeMain().caret = RealizeVirtualSpace(sel.RangeMain().caret); const int xInsert = XFromPosition(sel.RangeMain().caret); @@ -2150,9 +2142,9 @@ void Editor::PasteRectangular(SelectionPosition pos, const char *ptr, Sci::Posit line++; if (line >= pdoc->LinesTotal()) { if (pdoc->eolMode != SC_EOL_LF) - pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), "\r", 1); + pdoc->InsertString(pdoc->Length(), "\r", 1); if (pdoc->eolMode != SC_EOL_CR) - pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), "\n", 1); + pdoc->InsertString(pdoc->Length(), "\n", 1); } // Pad the end of lines with spaces if required sel.RangeMain().caret.SetPosition(PositionFromLineX(line, xInsert)); @@ -2212,7 +2204,7 @@ void Editor::Clear() { void Editor::SelectAll() { sel.Clear(); - SetSelection(0, static_cast<Sci::Position>(pdoc->Length())); + SetSelection(0, pdoc->Length()); Redraw(); } @@ -2249,8 +2241,8 @@ void Editor::DelCharBack(bool allowLineStartDeletion) { sel.Range(r).caret.SetVirtualSpace(sel.Range(r).caret.VirtualSpace() - 1); sel.Range(r).anchor.SetVirtualSpace(sel.Range(r).caret.VirtualSpace()); } else { - const Sci::Line lineCurrentPos = static_cast<Sci::Line>( - pdoc->LineFromPosition(sel.Range(r).caret.Position())); + const Sci::Line lineCurrentPos = + pdoc->SciLineFromPosition(sel.Range(r).caret.Position()); if (allowLineStartDeletion || (pdoc->LineStart(lineCurrentPos) != sel.Range(r).caret.Position())) { if (pdoc->GetColumn(sel.Range(r).caret.Position()) <= pdoc->GetLineIndentation(lineCurrentPos) && pdoc->GetColumn(sel.Range(r).caret.Position()) > 0 && pdoc->backspaceUnindents) { @@ -2408,11 +2400,11 @@ void Editor::NotifyIndicatorClick(bool click, Sci::Position position, int modifi bool Editor::NotifyMarginClick(Point pt, int modifiers) { const int marginClicked = vs.MarginFromLocation(pt); if ((marginClicked >= 0) && vs.ms[marginClicked].sensitive) { - const Sci::Position position = static_cast<Sci::Position>(pdoc->LineStart(LineFromLocation(pt))); + const Sci::Position position = pdoc->LineStart(LineFromLocation(pt)); if ((vs.ms[marginClicked].mask & SC_MASK_FOLDERS) && (foldAutomatic & SC_AUTOMATICFOLD_CLICK)) { const bool ctrl = (modifiers & SCI_CTRL) != 0; const bool shift = (modifiers & SCI_SHIFT) != 0; - const Sci::Line lineClick = static_cast<Sci::Line>(pdoc->LineFromPosition(position)); + const Sci::Line lineClick = pdoc->SciLineFromPosition(position); if (shift && ctrl) { FoldAll(SC_FOLDACTION_TOGGLE); } else { @@ -2446,7 +2438,7 @@ bool Editor::NotifyMarginClick(Point pt, int modifiers) { bool Editor::NotifyMarginRightClick(Point pt, int modifiers) { const int marginRightClicked = vs.MarginFromLocation(pt); if ((marginRightClicked >= 0) && vs.ms[marginRightClicked].sensitive) { - const Sci::Position position = static_cast<Sci::Position>(pdoc->LineStart(LineFromLocation(pt))); + const Sci::Position position = pdoc->LineStart(LineFromLocation(pt)); SCNotification scn = {}; scn.nmhdr.code = SCN_MARGINRIGHTCLICK; scn.modifiers = modifiers; @@ -2496,7 +2488,7 @@ void Editor::NotifySavePoint(Document *, void *, bool atSavePoint) { void Editor::CheckModificationForWrap(DocModification mh) { if (mh.modificationType & (SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT)) { view.llc.Invalidate(LineLayout::llCheckTextAndStyle); - const Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position)); + const Sci::Line lineDoc = pdoc->SciLineFromPosition(mh.position); const Sci::Line lines = std::max(static_cast<Sci::Line>(0), mh.linesAdded); if (Wrapping()) { NeedWrapping(lineDoc, lineDoc + lines + 1); @@ -2538,8 +2530,8 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) { if (mh.modificationType & SC_MOD_CHANGELINESTATE) { if (paintState == painting) { CheckForChangeOutsidePaint( - Range(static_cast<Sci::Position>(pdoc->LineStart(mh.line)), - static_cast<Sci::Position>(pdoc->LineStart(mh.line + 1)))); + Range(pdoc->LineStart(mh.line), + pdoc->LineStart(mh.line + 1))); } else { // Could check that change is before last visible line. Redraw(); @@ -2585,20 +2577,20 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) { } if ((mh.modificationType & (SC_MOD_BEFOREINSERT | SC_MOD_BEFOREDELETE)) && pcs->HiddenLines()) { // Some lines are hidden so may need shown. - const Sci::Line lineOfPos = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position)); + const Sci::Line lineOfPos = pdoc->SciLineFromPosition(mh.position); Sci::Position endNeedShown = mh.position; if (mh.modificationType & SC_MOD_BEFOREINSERT) { if (pdoc->ContainsLineEnd(mh.text, mh.length) && (mh.position != pdoc->LineStart(lineOfPos))) - endNeedShown = static_cast<Sci::Position>(pdoc->LineStart(lineOfPos+1)); + endNeedShown = pdoc->LineStart(lineOfPos+1); } else if (mh.modificationType & SC_MOD_BEFOREDELETE) { // If the deletion includes any EOL then we extend the need shown area. endNeedShown = mh.position + mh.length; - Sci::Line lineLast = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position+mh.length)); + Sci::Line lineLast = pdoc->SciLineFromPosition(mh.position+mh.length); for (Sci::Line line = lineOfPos + 1; line <= lineLast; line++) { const Sci::Line lineMaxSubord = pdoc->GetLastChild(line, -1, -1); if (lineLast < lineMaxSubord) { lineLast = lineMaxSubord; - endNeedShown = static_cast<Sci::Position>(pdoc->LineEnd(lineLast)); + endNeedShown = pdoc->LineEnd(lineLast); } } } @@ -2607,7 +2599,7 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) { if (mh.linesAdded != 0) { // Update contraction state for inserted and removed lines // lineOfPos should be calculated in context of state before modification, shouldn't it - Sci::Line lineOfPos = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position)); + Sci::Line lineOfPos = pdoc->SciLineFromPosition(mh.position); if (mh.position > pdoc->LineStart(lineOfPos)) lineOfPos++; // Affecting subsequent lines if (mh.linesAdded > 0) { @@ -2618,7 +2610,7 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) { view.LinesAddedOrRemoved(lineOfPos, mh.linesAdded); } if (mh.modificationType & SC_MOD_CHANGEANNOTATION) { - const Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position)); + const Sci::Line lineDoc = pdoc->SciLineFromPosition(mh.position); if (vs.annotationVisible) { if (pcs->SetHeight(lineDoc, static_cast<int>(pcs->GetHeight(lineDoc) + mh.annotationLinesAdded))) { SetScrollBars(); @@ -2638,7 +2630,7 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) { } if (paintState == notPainting && !CanDeferToLastStep(mh)) { - QueueIdleWork(WorkNeeded::workStyle, static_cast<Sci::Position>(pdoc->Length())); + QueueIdleWork(WorkNeeded::workStyle, pdoc->Length()); Redraw(); } } else { @@ -2846,12 +2838,12 @@ void Editor::PageMove(int direction, Selection::selTypes selt, bool stuttered) { Sci::Line topLineNew; SelectionPosition newPos; - const Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret())); + const Sci::Line currentLine = pdoc->SciLineFromPosition(sel.MainCaret()); const Sci::Line topStutterLine = topLine + caretYSlop; - const Sci::Line bottomStutterLine = static_cast<Sci::Line>( - pdoc->LineFromPosition(PositionFromLocation( + const Sci::Line bottomStutterLine = + pdoc->SciLineFromPosition(PositionFromLocation( Point::FromInts(lastXChosen - xOffset, direction * vs.lineHeight * static_cast<int>(LinesToScroll())))) - - caretYSlop - 1); + - caretYSlop - 1; if (stuttered && (direction < 0 && currentLine > topStutterLine)) { topLineNew = topLine; @@ -2908,15 +2900,15 @@ void Editor::ChangeCaseOfSelection(int caseMapping) { } const size_t endDifferenceText = sText.size() - 1 - lastDifferenceText; pdoc->DeleteChars( - static_cast<Sci::Position>(currentNoVS.Start().Position() + firstDifference), - static_cast<Sci::Position>(rangeBytes - firstDifference - endDifferenceText)); - const Sci::Position lengthChange = static_cast<Sci::Position>(lastDifferenceMapped - firstDifference + 1); + currentNoVS.Start().Position() + firstDifference, + rangeBytes - firstDifference - endDifferenceText); + const Sci::Position lengthChange = lastDifferenceMapped - firstDifference + 1; const Sci::Position lengthInserted = pdoc->InsertString( - static_cast<int>(currentNoVS.Start().Position() + firstDifference), + currentNoVS.Start().Position() + firstDifference, sMapped.c_str() + firstDifference, lengthChange); // Automatic movement changes selection so reset to exactly the same as it was. - const Sci::Position diffSizes = static_cast<Sci::Position>(sMapped.size() - sText.size()) + lengthInserted - lengthChange; + const Sci::Position diffSizes = sMapped.size() - sText.size() + lengthInserted - lengthChange; if (diffSizes != 0) { if (current.anchor > current.caret) current.anchor.Add(diffSizes); @@ -2930,36 +2922,34 @@ void Editor::ChangeCaseOfSelection(int caseMapping) { } void Editor::LineTranspose() { - const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret())); + const Sci::Line line = pdoc->SciLineFromPosition(sel.MainCaret()); if (line > 0) { UndoGroup ug(pdoc); - const Sci::Position startPrevious = static_cast<Sci::Position>(pdoc->LineStart(line - 1)); - const std::string linePrevious = RangeText(startPrevious, - static_cast<Sci::Position>(pdoc->LineEnd(line - 1))); + const Sci::Position startPrevious = pdoc->LineStart(line - 1); + const std::string linePrevious = RangeText(startPrevious, pdoc->LineEnd(line - 1)); - Sci::Position startCurrent = static_cast<Sci::Position>(pdoc->LineStart(line)); - const std::string lineCurrent = RangeText(startCurrent, - static_cast<Sci::Position>(pdoc->LineEnd(line))); + Sci::Position startCurrent = pdoc->LineStart(line); + const std::string lineCurrent = RangeText(startCurrent, pdoc->LineEnd(line)); - pdoc->DeleteChars(startCurrent, static_cast<Sci::Position>(lineCurrent.length())); - pdoc->DeleteChars(startPrevious, static_cast<Sci::Position>(linePrevious.length())); - startCurrent -= static_cast<Sci::Position>(linePrevious.length()); + pdoc->DeleteChars(startCurrent, lineCurrent.length()); + pdoc->DeleteChars(startPrevious, linePrevious.length()); + startCurrent -= linePrevious.length(); startCurrent += pdoc->InsertString(startPrevious, lineCurrent.c_str(), - static_cast<Sci::Position>(lineCurrent.length())); + lineCurrent.length()); pdoc->InsertString(startCurrent, linePrevious.c_str(), - static_cast<Sci::Position>(linePrevious.length())); + linePrevious.length()); // Move caret to start of current line MovePositionTo(SelectionPosition(startCurrent)); } } void Editor::LineReverse() { - const Sci::Line lineStart = static_cast<Sci::Line>( - pdoc->LineFromPosition(sel.RangeMain().Start().Position())); - const Sci::Line lineEnd = static_cast<Sci::Line>( - pdoc->LineFromPosition(sel.RangeMain().End().Position()-1)); + const Sci::Line lineStart = + pdoc->SciLineFromPosition(sel.RangeMain().Start().Position()); + const Sci::Line lineEnd = + pdoc->SciLineFromPosition(sel.RangeMain().End().Position()-1); const Sci::Line lineDiff = lineEnd - lineStart; if (lineDiff <= 0) return; @@ -2967,12 +2957,12 @@ void Editor::LineReverse() { for (Sci::Line i=(lineDiff+1)/2-1; i>=0; --i) { const Sci::Line lineNum2 = lineEnd - i; const Sci::Line lineNum1 = lineStart + i; - Sci::Position lineStart2 = static_cast<Sci::Position>(pdoc->LineStart(lineNum2)); - const Sci::Position lineStart1 = static_cast<Sci::Position>(pdoc->LineStart(lineNum1)); - const std::string line2 = RangeText(lineStart2, static_cast<Sci::Position>(pdoc->LineEnd(lineNum2))); - const std::string line1 = RangeText(lineStart1, static_cast<Sci::Position>(pdoc->LineEnd(lineNum1))); - const Sci::Position lineLen2 = static_cast<Sci::Position>(line2.length()); - const Sci::Position lineLen1 = static_cast<Sci::Position>(line1.length()); + Sci::Position lineStart2 = pdoc->LineStart(lineNum2); + const Sci::Position lineStart1 = pdoc->LineStart(lineNum1); + const std::string line2 = RangeText(lineStart2, pdoc->LineEnd(lineNum2)); + const std::string line1 = RangeText(lineStart1, pdoc->LineEnd(lineNum1)); + const Sci::Position lineLen2 = line2.length(); + const Sci::Position lineLen1 = line1.length(); pdoc->DeleteChars(lineStart2, lineLen2); pdoc->DeleteChars(lineStart1, lineLen1); lineStart2 -= lineLen1; @@ -2980,8 +2970,8 @@ void Editor::LineReverse() { pdoc->InsertString(lineStart1, line2.c_str(), lineLen2); } // Wholly select all affected lines - sel.RangeMain() = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineStart)), - static_cast<Sci::Position>(pdoc->LineStart(lineEnd+1))); + sel.RangeMain() = SelectionRange(pdoc->LineStart(lineStart), + pdoc->LineStart(lineEnd+1)); } void Editor::Duplicate(bool forLine) { @@ -2990,31 +2980,31 @@ void Editor::Duplicate(bool forLine) { } UndoGroup ug(pdoc); const char *eol = ""; - int eolLen = 0; + Sci::Position eolLen = 0; if (forLine) { eol = StringFromEOLMode(pdoc->eolMode); - eolLen = istrlen(eol); + eolLen = strlen(eol); } for (size_t r=0; r<sel.Count(); r++) { SelectionPosition start = sel.Range(r).Start(); SelectionPosition end = sel.Range(r).End(); if (forLine) { - const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.Range(r).caret.Position())); - start = SelectionPosition(static_cast<Sci::Position>(pdoc->LineStart(line))); - end = SelectionPosition(static_cast<Sci::Position>(pdoc->LineEnd(line))); + const Sci::Line line = pdoc->SciLineFromPosition(sel.Range(r).caret.Position()); + start = SelectionPosition(pdoc->LineStart(line)); + end = SelectionPosition(pdoc->LineEnd(line)); } std::string text = RangeText(start.Position(), end.Position()); Sci::Position lengthInserted = eolLen; if (forLine) lengthInserted = pdoc->InsertString(end.Position(), eol, eolLen); - pdoc->InsertString(end.Position() + lengthInserted, text.c_str(), static_cast<Sci::Position>(text.length())); + pdoc->InsertString(end.Position() + lengthInserted, text.c_str(), text.length()); } if (sel.Count() && sel.IsRectangular()) { SelectionPosition last = sel.Last(); if (forLine) { - const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(last.Position())); + const Sci::Line line = pdoc->SciLineFromPosition(last.Position()); last = SelectionPosition(last.Position() + - static_cast<Sci::Position>(pdoc->LineStart(line+1) - pdoc->LineStart(line))); + pdoc->LineStart(line+1) - pdoc->LineStart(line)); } if (sel.Rectangular().anchor > sel.Rectangular().caret) sel.Rectangular().anchor = last; @@ -3048,7 +3038,7 @@ void Editor::NewLine() { sel.Range(r).ClearVirtualSpace(); const char *eol = StringFromEOLMode(pdoc->eolMode); const Sci::Position positionInsert = sel.Range(r).caret.Position(); - const Sci::Position insertLength = pdoc->InsertString(positionInsert, eol, istrlen(eol)); + const Sci::Position insertLength = pdoc->InsertString(positionInsert, eol, strlen(eol)); if (insertLength > 0) { sel.Range(r) = SelectionRange(positionInsert + insertLength); countInsertions++; @@ -3083,8 +3073,8 @@ SelectionPosition Editor::PositionUpOrDown(SelectionPosition spStart, int direct int skipLines = 0; if (vs.annotationVisible) { - const Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(spStart.Position())); - const Point ptStartLine = LocationFromPosition(static_cast<Sci::Position>(pdoc->LineStart(lineDoc))); + const Sci::Line lineDoc = pdoc->SciLineFromPosition(spStart.Position()); + const Point ptStartLine = LocationFromPosition(pdoc->LineStart(lineDoc)); const int subLine = static_cast<int>(pt.y - ptStartLine.y) / vs.lineHeight; if (direction < 0 && subLine == 0) { @@ -3179,7 +3169,7 @@ void Editor::ParaUpOrDown(int direction, Selection::selTypes selt) { const Sci::Position savedPos = sel.MainCaret(); do { MovePositionTo(SelectionPosition(direction > 0 ? pdoc->ParaDown(sel.MainCaret()) : pdoc->ParaUp(sel.MainCaret())), selt); - lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret())); + lineDoc = pdoc->SciLineFromPosition(sel.MainCaret()); if (direction > 0) { if (sel.MainCaret() >= pdoc->Length() && !pcs->GetVisible(lineDoc)) { if (selt == Selection::noSel) { @@ -3375,7 +3365,7 @@ int Editor::HorizontalMove(unsigned int iMessage) { case SCI_HOMERECTEXTEND: case SCI_HOMEEXTEND: // only when sel.IsRectangular() && sel.MoveExtends() spCaret = SelectionPosition( - static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())))); + pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position()))); break; case SCI_VCHOMERECTEXTEND: case SCI_VCHOMEEXTEND: // only when sel.IsRectangular() && sel.MoveExtends() @@ -3397,7 +3387,7 @@ int Editor::HorizontalMove(unsigned int iMessage) { switch (iMessage) { case SCI_HOME: selAtLimit = SelectionPosition( - static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(selAtLimit.Position())))); + pdoc->LineStart(pdoc->LineFromPosition(selAtLimit.Position()))); break; case SCI_VCHOME: selAtLimit = SelectionPosition(pdoc->VCHomePosition(selAtLimit.Position())); @@ -3460,7 +3450,7 @@ int Editor::HorizontalMove(unsigned int iMessage) { case SCI_HOME: case SCI_HOMEEXTEND: spCaret = SelectionPosition( - static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())))); + pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position()))); break; case SCI_HOMEDISPLAY: case SCI_HOMEDISPLAYEXTEND: @@ -3471,7 +3461,7 @@ int Editor::HorizontalMove(unsigned int iMessage) { spCaret = MovePositionSoVisible(StartEndDisplayLine(spCaret.Position(), true), -1); if (spCaretNow <= spCaret) spCaret = SelectionPosition( - static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())))); + pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position()))); break; case SCI_VCHOME: case SCI_VCHOMEEXTEND: @@ -3621,13 +3611,13 @@ int Editor::DelWordOrLine(unsigned int iMessage) { break; case SCI_DELLINELEFT: rangeDelete = Range( - static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(sel.Range(r).caret.Position()))), + pdoc->LineStart(pdoc->LineFromPosition(sel.Range(r).caret.Position())), sel.Range(r).caret.Position()); break; case SCI_DELLINERIGHT: rangeDelete = Range( sel.Range(r).caret.Position(), - static_cast<Sci::Position>(pdoc->LineEnd(pdoc->LineFromPosition(sel.Range(r).caret.Position())))); + pdoc->LineEnd(pdoc->LineFromPosition(sel.Range(r).caret.Position()))); break; } if (!RangeContainsProtected(rangeDelete.start, rangeDelete.end)) { @@ -3738,11 +3728,11 @@ int Editor::KeyCommand(unsigned int iMessage) { SetLastXChosen(); break; case SCI_DOCUMENTEND: - MovePositionTo(static_cast<Sci::Position>(pdoc->Length())); + MovePositionTo(pdoc->Length()); SetLastXChosen(); break; case SCI_DOCUMENTENDEXTEND: - MovePositionTo(static_cast<Sci::Position>(pdoc->Length()), Selection::selStream); + MovePositionTo(pdoc->Length(), Selection::selStream); SetLastXChosen(); break; case SCI_STUTTEREDPAGEUP: @@ -3848,26 +3838,26 @@ int Editor::KeyCommand(unsigned int iMessage) { return DelWordOrLine(iMessage); case SCI_LINECOPY: { - const Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(SelectionStart().Position())); - const Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(SelectionEnd().Position())); - CopyRangeToClipboard(static_cast<Sci::Position>(pdoc->LineStart(lineStart)), - static_cast<Sci::Position>(pdoc->LineStart(lineEnd + 1))); + const Sci::Line lineStart = pdoc->SciLineFromPosition(SelectionStart().Position()); + const Sci::Line lineEnd = pdoc->SciLineFromPosition(SelectionEnd().Position()); + CopyRangeToClipboard(pdoc->LineStart(lineStart), + pdoc->LineStart(lineEnd + 1)); } break; case SCI_LINECUT: { - const Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(SelectionStart().Position())); - const Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(SelectionEnd().Position())); - const Sci::Position start = static_cast<Sci::Position>(pdoc->LineStart(lineStart)); - const Sci::Position end = static_cast<Sci::Position>(pdoc->LineStart(lineEnd + 1)); + const Sci::Line lineStart = pdoc->SciLineFromPosition(SelectionStart().Position()); + const Sci::Line lineEnd = pdoc->SciLineFromPosition(SelectionEnd().Position()); + const Sci::Position start = pdoc->LineStart(lineStart); + const Sci::Position end = pdoc->LineStart(lineEnd + 1); SetSelection(start, end); Cut(); SetLastXChosen(); } break; case SCI_LINEDELETE: { - const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret())); - const Sci::Position start = static_cast<Sci::Position>(pdoc->LineStart(line)); - const Sci::Position end = static_cast<Sci::Position>(pdoc->LineStart(line + 1)); + const Sci::Line line = pdoc->SciLineFromPosition(sel.MainCaret()); + const Sci::Position start = pdoc->LineStart(line); + const Sci::Position end = pdoc->LineStart(line + 1); pdoc->DeleteChars(start, end - start); } break; @@ -3920,10 +3910,10 @@ int Editor::KeyDownWithModifiers(int key, int modifiers, bool *consumed) { void Editor::Indent(bool forwards) { UndoGroup ug(pdoc); for (size_t r=0; r<sel.Count(); r++) { - const Sci::Line lineOfAnchor = static_cast<Sci::Line>( - pdoc->LineFromPosition(sel.Range(r).anchor.Position())); + const Sci::Line lineOfAnchor = + pdoc->SciLineFromPosition(sel.Range(r).anchor.Position()); Sci::Position caretPosition = sel.Range(r).caret.Position(); - const Sci::Line lineCurrentPos = static_cast<Sci::Line>(pdoc->LineFromPosition(caretPosition)); + const Sci::Line lineCurrentPos = pdoc->SciLineFromPosition(caretPosition); if (lineOfAnchor == lineCurrentPos) { if (forwards) { pdoc->DeleteChars(sel.Range(r).Start().Position(), sel.Range(r).Length()); @@ -3946,7 +3936,7 @@ void Editor::Indent(bool forwards) { numSpaces = pdoc->tabInChars; const std::string spaceText(numSpaces, ' '); const Sci::Position lengthInserted = pdoc->InsertString(caretPosition, spaceText.c_str(), - static_cast<Sci::Position>(spaceText.length())); + spaceText.length()); sel.Range(r) = SelectionRange(caretPosition + lengthInserted); } } @@ -3970,9 +3960,9 @@ void Editor::Indent(bool forwards) { } } else { // Multiline const Sci::Position anchorPosOnLine = sel.Range(r).anchor.Position() - - static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor)); + pdoc->LineStart(lineOfAnchor); const Sci::Position currentPosPosOnLine = caretPosition - - static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)); + pdoc->LineStart(lineCurrentPos); // Multiple lines selected so indent / dedent const Sci::Line lineTopSel = std::min(lineOfAnchor, lineCurrentPos); Sci::Line lineBottomSel = std::max(lineOfAnchor, lineCurrentPos); @@ -3981,18 +3971,18 @@ void Editor::Indent(bool forwards) { pdoc->Indent(forwards, lineBottomSel, lineTopSel); if (lineOfAnchor < lineCurrentPos) { if (currentPosPosOnLine == 0) - sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)), - static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor))); + sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos), + pdoc->LineStart(lineOfAnchor)); else - sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos + 1)), - static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor))); + sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos + 1), + pdoc->LineStart(lineOfAnchor)); } else { if (anchorPosOnLine == 0) - sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)), - static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor))); + sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos), + pdoc->LineStart(lineOfAnchor)); else - sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)), - static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor + 1))); + sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos), + pdoc->LineStart(lineOfAnchor + 1)); } } } @@ -4024,7 +4014,7 @@ Sci::Position Editor::FindText( sptr_t lParam) { ///< @c Sci_TextToFind structure: The text to search for in the given range. Sci_TextToFind *ft = reinterpret_cast<Sci_TextToFind *>(lParam); - Sci::Position lengthFound = istrlen(ft->lpstrText); + Sci::Position lengthFound = strlen(ft->lpstrText); if (!pdoc->HasCaseFolder()) pdoc->SetCaseFolder(CaseFolderForEncoding()); try { @@ -4038,7 +4028,7 @@ Sci::Position Editor::FindText( ft->chrgText.cpMin = static_cast<Sci_PositionCR>(pos); ft->chrgText.cpMax = static_cast<Sci_PositionCR>(pos + lengthFound); } - return static_cast<int>(pos); + return pos; } catch (RegexError &) { errorStatus = SC_STATUS_WARN_REGEX; return -1; @@ -4073,12 +4063,12 @@ Sci::Position Editor::SearchText( const char *txt = reinterpret_cast<char *>(lParam); Sci::Position pos; - Sci::Position lengthFound = istrlen(txt); + Sci::Position lengthFound = strlen(txt); if (!pdoc->HasCaseFolder()) pdoc->SetCaseFolder(CaseFolderForEncoding()); try { if (iMessage == SCI_SEARCHNEXT) { - pos = pdoc->FindText(searchAnchor, static_cast<Sci::Position>(pdoc->Length()), txt, + pos = pdoc->FindText(searchAnchor, pdoc->Length(), txt, static_cast<int>(wParam), &lengthFound); } else { @@ -4143,7 +4133,7 @@ void Editor::GoToLine(Sci::Line lineNo) { lineNo = pdoc->LinesTotal(); if (lineNo < 0) lineNo = 0; - SetEmptySelection(static_cast<Sci::Position>(pdoc->LineStart(lineNo))); + SetEmptySelection(pdoc->LineStart(lineNo)); ShowCaretAtCurrentPosition(); EnsureCaretVisible(); } @@ -4171,9 +4161,9 @@ std::string Editor::RangeText(Sci::Position start, Sci::Position end) const { void Editor::CopySelectionRange(SelectionText *ss, bool allowLineCopy) { if (sel.Empty()) { if (allowLineCopy) { - const Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret())); - const Sci::Position start = static_cast<Sci::Position>(pdoc->LineStart(currentLine)); - const Sci::Position end = static_cast<Sci::Position>(pdoc->LineEnd(currentLine)); + const Sci::Line currentLine = pdoc->SciLineFromPosition(sel.MainCaret()); + const Sci::Position start = pdoc->LineStart(currentLine); + const Sci::Position end = pdoc->LineEnd(currentLine); std::string text = RangeText(start, end); if (pdoc->eolMode != SC_EOL_LF) @@ -4212,7 +4202,7 @@ void Editor::CopyRangeToClipboard(Sci::Position start, Sci::Position end) { CopyToClipboard(selectedText); } -void Editor::CopyText(int length, const char *text) { +void Editor::CopyText(size_t length, const char *text) { SelectionText selectedText; selectedText.Copy(std::string(text, length), pdoc->dbcsCodePage, vs.styles[STYLE_DEFAULT].characterSet, false, false); @@ -4298,14 +4288,14 @@ void Editor::DropAt(SelectionPosition position, const char *value, size_t length std::string convertedText = Document::TransformLineEnds(value, lengthValue, pdoc->eolMode); if (rectangular) { - PasteRectangular(position, convertedText.c_str(), static_cast<Sci::Position>(convertedText.length())); + PasteRectangular(position, convertedText.c_str(), convertedText.length()); // Should try to select new rectangle but it may not be a rectangle now so just select the drop position SetEmptySelection(position); } else { position = MovePositionOutsideChar(position, sel.MainCaret() - position.Position()); position = RealizeVirtualSpace(position); const Sci::Position lengthInserted = pdoc->InsertString( - position.Position(), convertedText.c_str(), static_cast<int>(convertedText.length())); + position.Position(), convertedText.c_str(), convertedText.length()); if (lengthInserted > 0) { SelectionPosition posAfterInsertion = position; posAfterInsertion.Add(lengthInserted); @@ -4391,17 +4381,17 @@ void Editor::TrimAndSetSelection(Sci::Position currentPos_, Sci::Position anchor void Editor::LineSelection(Sci::Position lineCurrentPos_, Sci::Position lineAnchorPos_, bool wholeLine) { Sci::Position selCurrentPos, selAnchorPos; if (wholeLine) { - const Sci::Line lineCurrent_ = static_cast<Sci::Line>(pdoc->LineFromPosition(lineCurrentPos_)); - const Sci::Line lineAnchor_ = static_cast<Sci::Line>(pdoc->LineFromPosition(lineAnchorPos_)); + const Sci::Line lineCurrent_ = pdoc->SciLineFromPosition(lineCurrentPos_); + const Sci::Line lineAnchor_ = pdoc->SciLineFromPosition(lineAnchorPos_); if (lineAnchorPos_ < lineCurrentPos_) { - selCurrentPos = static_cast<Sci::Position>(pdoc->LineStart(lineCurrent_ + 1)); - selAnchorPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_)); + selCurrentPos = pdoc->LineStart(lineCurrent_ + 1); + selAnchorPos = pdoc->LineStart(lineAnchor_); } else if (lineAnchorPos_ > lineCurrentPos_) { - selCurrentPos = static_cast<Sci::Position>(pdoc->LineStart(lineCurrent_)); - selAnchorPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_ + 1)); + selCurrentPos = pdoc->LineStart(lineCurrent_); + selAnchorPos = pdoc->LineStart(lineAnchor_ + 1); } else { // Same line, select it - selCurrentPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_ + 1)); - selAnchorPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_)); + selCurrentPos = pdoc->LineStart(lineAnchor_ + 1); + selAnchorPos = pdoc->LineStart(lineAnchor_); } } else { if (lineAnchorPos_ < lineCurrentPos_) { @@ -4884,7 +4874,7 @@ void Editor::ButtonUpWithModifiers(Point pt, unsigned int curTime, int modifiers const SelectionPosition selEnd = SelectionEnd(); if (selStart < selEnd) { if (drag.Length()) { - const int length = static_cast<int>(drag.Length()); + const Sci::Position length = drag.Length(); if (modifiers & SCI_CTRL) { const Sci::Position lengthInserted = pdoc->InsertString( newPos.Position(), drag.Data(), length); @@ -4892,15 +4882,15 @@ void Editor::ButtonUpWithModifiers(Point pt, unsigned int curTime, int modifiers SetSelection(newPos.Position(), newPos.Position() + lengthInserted); } } else if (newPos < selStart) { - pdoc->DeleteChars(selStart.Position(), static_cast<int>(drag.Length())); + pdoc->DeleteChars(selStart.Position(), drag.Length()); const Sci::Position lengthInserted = pdoc->InsertString( newPos.Position(), drag.Data(), length); if (lengthInserted > 0) { SetSelection(newPos.Position(), newPos.Position() + lengthInserted); } } else if (newPos > selEnd) { - pdoc->DeleteChars(selStart.Position(), static_cast<int>(drag.Length())); - newPos.Add(-static_cast<int>(drag.Length())); + pdoc->DeleteChars(selStart.Position(), drag.Length()); + newPos.Add(-static_cast<Sci::Position>(drag.Length())); const Sci::Position lengthInserted = pdoc->InsertString( newPos.Position(), drag.Data(), length); if (lengthInserted > 0) { @@ -5023,9 +5013,9 @@ Sci::Position Editor::PositionAfterArea(PRectangle rcArea) const { // detect multiline comment additions and heals single line comments const Sci::Line lineAfter = TopLineOfMain() + static_cast<Sci::Line>(rcArea.bottom - 1) / vs.lineHeight + 1; if (lineAfter < pcs->LinesDisplayed()) - return static_cast<Sci::Position>(pdoc->LineStart(pcs->DocFromDisplay(lineAfter) + 1)); + return pdoc->LineStart(pcs->DocFromDisplay(lineAfter) + 1); else - return static_cast<Sci::Position>(pdoc->Length()); + return pdoc->Length(); } // Style to a position within the view. If this causes a change at end of last line then @@ -5059,9 +5049,9 @@ Sci::Position Editor::PositionAfterMaxStyling(Sci::Position posMax, bool scrolli const Sci::Line linesToStyle = std::clamp(static_cast<int>(secondsAllowed / pdoc->durationStyleOneLine), 10, 0x10000); const Sci::Line stylingMaxLine = std::min( - static_cast<Sci::Line>(pdoc->LineFromPosition(pdoc->GetEndStyled()) + linesToStyle), + pdoc->SciLineFromPosition(pdoc->GetEndStyled()) + linesToStyle, pdoc->LinesTotal()); - return std::min(static_cast<Sci::Position>(pdoc->LineStart(stylingMaxLine)), posMax); + return std::min(pdoc->LineStart(stylingMaxLine), posMax); } void Editor::StartIdleStyling(bool truncatedLastStyling) { @@ -5097,7 +5087,7 @@ void Editor::StyleAreaBounded(PRectangle rcArea, bool scrolling) { void Editor::IdleStyling() { const Sci::Position posAfterArea = PositionAfterArea(GetClientRectangle()); const Sci::Position endGoal = (idleStyling >= SC_IDLESTYLING_AFTERVISIBLE) ? - static_cast<Sci::Position>(pdoc->Length()) : posAfterArea; + pdoc->Length() : posAfterArea; const Sci::Position posAfterMax = PositionAfterMaxStyling(endGoal, false); pdoc->StyleToAdjustingLineDuration(posAfterMax); if (pdoc->GetEndStyled() >= endGoal) { @@ -5109,7 +5099,7 @@ void Editor::IdleWork() { // Style the line after the modification as this allows modifications that change just the // line of the modification to heal instead of propagating to the rest of the window. if (workNeeded.items & WorkNeeded::workStyle) { - StyleToPositionInView(static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(workNeeded.upTo) + 2))); + StyleToPositionInView(pdoc->LineStart(pdoc->LineFromPosition(workNeeded.upTo) + 2)); } NotifyUpdateUI(); workNeeded.Reset(); @@ -5305,8 +5295,8 @@ void Editor::FoldLine(Sci::Line line, int action) { pcs->SetExpanded(line, false); pcs->SetVisible(line + 1, lineMaxSubord, false); - const Sci::Line lineCurrent = static_cast<Sci::Line>( - pdoc->LineFromPosition(sel.MainCaret())); + const Sci::Line lineCurrent = + pdoc->SciLineFromPosition(sel.MainCaret()); if (lineCurrent > line && lineCurrent <= lineMaxSubord) { // This does not re-expand the fold EnsureCaretVisible(); @@ -5425,7 +5415,7 @@ void Editor::EnsureLineVisible(Sci::Line lineDoc, bool enforcePolicy) { } void Editor::FoldAll(int action) { - pdoc->EnsureStyledTo(static_cast<Sci::Position>(pdoc->Length())); + pdoc->EnsureStyledTo(pdoc->Length()); const Sci::Line maxLine = pdoc->LinesTotal(); bool expanding = action == SC_FOLDACTION_EXPAND; if (action == SC_FOLDACTION_TOGGLE) { @@ -5446,7 +5436,7 @@ void Editor::FoldAll(int action) { } } } else { - for (int line = 0; line < maxLine; line++) { + for (Sci::Line line = 0; line < maxLine; line++) { const int level = pdoc->GetLevel(line); if ((level & SC_FOLDLEVELHEADERFLAG) && (SC_FOLDLEVELBASE == LevelNumber(level))) { @@ -5514,8 +5504,8 @@ void Editor::FoldChanged(Sci::Line line, int levelNow, int levelPrev) { void Editor::NeedShown(Sci::Position pos, Sci::Position len) { if (foldAutomatic & SC_AUTOMATICFOLD_SHOW) { - const Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(pos)); - const Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(pos+len)); + const Sci::Line lineStart = pdoc->SciLineFromPosition(pos); + const Sci::Line lineEnd = pdoc->SciLineFromPosition(pos+len); for (Sci::Line line = lineStart; line <= lineEnd; line++) { EnsureLineVisible(line, false); } @@ -5545,7 +5535,7 @@ Sci::Position Editor::GetTag(char *tagValue, int tagNumber) { Sci::Position Editor::ReplaceTarget(bool replacePatterns, const char *text, Sci::Position length) { UndoGroup ug(pdoc); if (length == -1) - length = istrlen(text); + length = strlen(text); if (replacePatterns) { text = pdoc->SubstituteByPosition(text, &length); if (!text) { @@ -5571,7 +5561,7 @@ int Editor::CodePage() const { return 0; } -int Editor::WrapCount(int line) { +Sci::Line Editor::WrapCount(Sci::Line line) { AutoSurface surface(this); AutoLineLayout ll(view.llc, view.RetrieveLineLayout(line, *this)); @@ -5705,27 +5695,27 @@ void Editor::SetSelectionNMessage(unsigned int iMessage, uptr_t wParam, sptr_t l switch (iMessage) { case SCI_SETSELECTIONNCARET: - sel.Range(wParam).caret.SetPosition(static_cast<int>(lParam)); + sel.Range(wParam).caret.SetPosition(static_cast<Sci::Position>(lParam)); break; case SCI_SETSELECTIONNANCHOR: - sel.Range(wParam).anchor.SetPosition(static_cast<int>(lParam)); + sel.Range(wParam).anchor.SetPosition(static_cast<Sci::Position>(lParam)); break; case SCI_SETSELECTIONNCARETVIRTUALSPACE: - sel.Range(wParam).caret.SetVirtualSpace(static_cast<int>(lParam)); + sel.Range(wParam).caret.SetVirtualSpace(static_cast<Sci::Position>(lParam)); break; case SCI_SETSELECTIONNANCHORVIRTUALSPACE: - sel.Range(wParam).anchor.SetVirtualSpace(static_cast<int>(lParam)); + sel.Range(wParam).anchor.SetVirtualSpace(static_cast<Sci::Position>(lParam)); break; case SCI_SETSELECTIONNSTART: - sel.Range(wParam).anchor.SetPosition(static_cast<int>(lParam)); + sel.Range(wParam).anchor.SetPosition(static_cast<Sci::Position>(lParam)); break; case SCI_SETSELECTIONNEND: - sel.Range(wParam).caret.SetPosition(static_cast<int>(lParam)); + sel.Range(wParam).caret.SetPosition(static_cast<Sci::Position>(lParam)); break; } @@ -5783,10 +5773,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { if (lParam == 0) return 0; UndoGroup ug(pdoc); - pdoc->DeleteChars(0, static_cast<Sci::Position>(pdoc->Length())); + pdoc->DeleteChars(0, pdoc->Length()); SetEmptySelection(0); const char *text = CharPtrFromSPtr(lParam); - pdoc->InsertString(0, text, istrlen(text)); + pdoc->InsertString(0, text, strlen(text)); return 1; } @@ -5819,11 +5809,11 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_COPYRANGE: - CopyRangeToClipboard(static_cast<int>(wParam), static_cast<int>(lParam)); + CopyRangeToClipboard(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)); break; case SCI_COPYTEXT: - CopyText(static_cast<int>(wParam), CharPtrFromSPtr(lParam)); + CopyText(wParam, CharPtrFromSPtr(lParam)); break; case SCI_PASTE: @@ -5856,14 +5846,14 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return topLine; case SCI_SETFIRSTVISIBLELINE: - ScrollTo(static_cast<int>(wParam)); + ScrollTo(static_cast<Sci::Line>(wParam)); break; case SCI_GETLINE: { // Risk of overwriting the end of the buffer - const Sci::Position lineStart = static_cast<Sci::Position>( - pdoc->LineStart(static_cast<Sci::Line>(wParam))); - const Sci::Position lineEnd = static_cast<Sci::Position>( - pdoc->LineStart(static_cast<Sci::Line>(wParam + 1))); + const Sci::Position lineStart = + pdoc->LineStart(static_cast<Sci::Line>(wParam)); + const Sci::Position lineEnd = + pdoc->LineStart(static_cast<Sci::Line>(wParam + 1)); if (lParam == 0) { return lineEnd - lineStart; } @@ -5888,7 +5878,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { Sci::Position nStart = static_cast<Sci::Position>(wParam); Sci::Position nEnd = static_cast<Sci::Position>(lParam); if (nEnd < 0) - nEnd = static_cast<Sci::Position>(pdoc->Length()); + nEnd = pdoc->Length(); if (nStart < 0) nStart = nEnd; // Remove selection InvalidateSelection(SelectionRange(nStart, nEnd)); @@ -5918,12 +5908,12 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { } case SCI_LINEFROMPOSITION: - if (static_cast<int>(wParam) < 0) + if (static_cast<Sci::Position>(wParam) < 0) return 0; - return pdoc->LineFromPosition(static_cast<int>(wParam)); + return pdoc->LineFromPosition(static_cast<Sci::Position>(wParam)); case SCI_POSITIONFROMLINE: - if (static_cast<int>(wParam) < 0) + if (static_cast<Sci::Position>(wParam) < 0) wParam = pdoc->LineFromPosition(SelectionStart().Position()); if (wParam == 0) return 0; // Even if there is no text, there is a first line that starts at 0 @@ -5931,14 +5921,14 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return -1; //if (wParam > pdoc->LineFromPosition(pdoc->Length())) // Useful test, anyway... // return -1; - return pdoc->LineStart(static_cast<int>(wParam)); + return pdoc->LineStart(static_cast<Sci::Position>(wParam)); // Replacement of the old Scintilla interpretation of EM_LINELENGTH case SCI_LINELENGTH: - if ((static_cast<int>(wParam) < 0) || - (static_cast<int>(wParam) > pdoc->LineFromPosition(pdoc->Length()))) + if ((static_cast<Sci::Position>(wParam) < 0) || + (static_cast<Sci::Position>(wParam) > pdoc->LineFromPosition(pdoc->Length()))) return 0; - return pdoc->LineStart(static_cast<int>(wParam) + 1) - pdoc->LineStart(static_cast<int>(wParam)); + return pdoc->LineStart(static_cast<Sci::Position>(wParam) + 1) - pdoc->LineStart(static_cast<Sci::Position>(wParam)); case SCI_REPLACESEL: { if (lParam == 0) @@ -5947,7 +5937,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { ClearSelection(); const char *replacement = CharPtrFromSPtr(lParam); const Sci::Position lengthInserted = pdoc->InsertString( - sel.MainCaret(), replacement, istrlen(replacement)); + sel.MainCaret(), replacement, strlen(replacement)); SetEmptySelection(sel.MainCaret() + lengthInserted); SetLastXChosen(); EnsureCaretVisible(); @@ -5955,27 +5945,27 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_SETTARGETSTART: - targetStart = static_cast<int>(wParam); + targetStart = static_cast<Sci::Position>(wParam); break; case SCI_GETTARGETSTART: return targetStart; case SCI_SETTARGETEND: - targetEnd = static_cast<int>(wParam); + targetEnd = static_cast<Sci::Position>(wParam); break; case SCI_GETTARGETEND: return targetEnd; case SCI_SETTARGETRANGE: - targetStart = static_cast<int>(wParam); - targetEnd = static_cast<int>(lParam); + targetStart = static_cast<Sci::Position>(wParam); + targetEnd = static_cast<Sci::Position>(lParam); break; case SCI_TARGETWHOLEDOCUMENT: targetStart = 0; - targetEnd = static_cast<Sci::Position>(pdoc->Length()); + targetEnd = pdoc->Length(); break; case SCI_TARGETFROMSELECTION: @@ -6016,14 +6006,15 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return GetTag(CharPtrFromSPtr(lParam), static_cast<int>(wParam)); case SCI_POSITIONBEFORE: - return pdoc->MovePositionOutsideChar(static_cast<int>(wParam) - 1, -1, true); + return pdoc->MovePositionOutsideChar(static_cast<Sci::Position>(wParam) - 1, -1, true); case SCI_POSITIONAFTER: - return pdoc->MovePositionOutsideChar(static_cast<int>(wParam) + 1, 1, true); + return pdoc->MovePositionOutsideChar(static_cast<Sci::Position>(wParam) + 1, 1, true); case SCI_POSITIONRELATIVE: - return std::clamp(static_cast<int>(pdoc->GetRelativePosition(static_cast<int>(wParam), static_cast<int>(lParam))), - 0, static_cast<int>(pdoc->Length())); + return std::clamp(pdoc->GetRelativePosition( + static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)), + static_cast<Sci::Position>(0), pdoc->Length()); case SCI_LINESCROLL: ScrollTo(topLine + static_cast<Sci::Line>(lParam)); @@ -6062,7 +6053,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { if (lParam < 0) { return 0; } else { - const Point pt = LocationFromPosition(static_cast<int>(lParam)); + const Point pt = LocationFromPosition(static_cast<Sci::Position>(lParam)); // Convert to view-relative return static_cast<int>(pt.x) - vs.textStart + vs.fixedColumnWidth; } @@ -6071,7 +6062,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { if (lParam < 0) { return 0; } else { - const Point pt = LocationFromPosition(static_cast<int>(lParam)); + const Point pt = LocationFromPosition(static_cast<Sci::Position>(lParam)); return static_cast<int>(pt.y); } @@ -6084,10 +6075,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { Sci_TextRange *tr = reinterpret_cast<Sci_TextRange *>(lParam); Sci::Position cpMax = static_cast<Sci::Position>(tr->chrg.cpMax); if (cpMax == -1) - cpMax = static_cast<Sci::Position>(pdoc->Length()); + cpMax = pdoc->Length(); PLATFORM_ASSERT(cpMax <= pdoc->Length()); - int len = static_cast<int>(cpMax - tr->chrg.cpMin); // No -1 as cpMin and cpMax are referring to inter character positions - pdoc->GetCharRange(tr->lpstrText, static_cast<int>(tr->chrg.cpMin), len); + Sci::Position len = cpMax - tr->chrg.cpMin; // No -1 as cpMin and cpMax are referring to inter character positions + pdoc->GetCharRange(tr->lpstrText, tr->chrg.cpMin, len); // Spec says copied text is terminated with a NUL tr->lpstrText[len] = '\0'; return len; // Not including NUL @@ -6138,11 +6129,11 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { if (lParam == 0) return 0; Sci::Position insertPos = static_cast<Sci::Position>(wParam); - if (static_cast<int>(wParam) == -1) + if (insertPos == -1) insertPos = CurrentPosition(); Sci::Position newCurrent = CurrentPosition(); const char *sz = CharPtrFromSPtr(lParam); - const Sci::Position lengthInserted = pdoc->InsertString(insertPos, sz, istrlen(sz)); + const Sci::Position lengthInserted = pdoc->InsertString(insertPos, sz, strlen(sz)); if (newCurrent > insertPos) newCurrent += lengthInserted; SetEmptySelection(newCurrent); @@ -6151,12 +6142,12 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_CHANGEINSERTION: PLATFORM_ASSERT(lParam); - pdoc->ChangeInsertion(CharPtrFromSPtr(lParam), static_cast<int>(wParam)); + pdoc->ChangeInsertion(CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); return 0; case SCI_APPENDTEXT: - pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), - CharPtrFromSPtr(lParam), static_cast<int>(wParam)); + pdoc->InsertString(pdoc->Length(), + CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); return 0; case SCI_CLEARALL: @@ -6164,7 +6155,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return 0; case SCI_DELETERANGE: - pdoc->DeleteChars(static_cast<int>(wParam), static_cast<int>(lParam)); + pdoc->DeleteChars(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)); return 0; case SCI_CLEARDOCUMENTSTYLE: @@ -6240,7 +6231,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_SETCURRENTPOS: if (sel.IsRectangular()) { - sel.Rectangular().caret.SetPosition(static_cast<int>(wParam)); + sel.Rectangular().caret.SetPosition(static_cast<Sci::Position>(wParam)); SetRectangularRange(); Redraw(); } else { @@ -6279,7 +6270,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return sel.LimitsForRectangularElseMain().end.Position(); case SCI_SETEMPTYSELECTION: - SetEmptySelection(static_cast<int>(wParam)); + SetEmptySelection(static_cast<Sci::Position>(wParam)); break; case SCI_SETPRINTMAGNIFICATION: @@ -6304,10 +6295,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return view.printParameters.wrapState; case SCI_GETSTYLEAT: - if (static_cast<int>(wParam) >= pdoc->Length()) + if (static_cast<Sci::Position>(wParam) >= pdoc->Length()) return 0; else - return pdoc->StyleAt(static_cast<int>(wParam)); + return pdoc->StyleAt(static_cast<Sci::Position>(wParam)); case SCI_REDO: Redo(); @@ -6327,8 +6318,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { Sci_TextRange *tr = reinterpret_cast<Sci_TextRange *>(lParam); int iPlace = 0; for (long iChar = tr->chrg.cpMin; iChar < tr->chrg.cpMax; iChar++) { - tr->lpstrText[iPlace++] = pdoc->CharAt(static_cast<int>(iChar)); - tr->lpstrText[iPlace++] = pdoc->StyleAt(static_cast<int>(iChar)); + tr->lpstrText[iPlace++] = pdoc->CharAt(iChar); + tr->lpstrText[iPlace++] = pdoc->StyleAt(iChar); } tr->lpstrText[iPlace] = '\0'; tr->lpstrText[iPlace + 1] = '\0'; @@ -6386,18 +6377,18 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { true, true); case SCI_GOTOLINE: - GoToLine(static_cast<int>(wParam)); + GoToLine(static_cast<Sci::Line>(wParam)); break; case SCI_GOTOPOS: - SetEmptySelection(static_cast<int>(wParam)); + SetEmptySelection(static_cast<Sci::Position>(wParam)); EnsureCaretVisible(); break; case SCI_GETCURLINE: { - const Sci::Line lineCurrentPos = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret())); - const Sci::Position lineStart = static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)); - const Sci::Position lineEnd = static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos + 1)); + const Sci::Line lineCurrentPos = pdoc->SciLineFromPosition(sel.MainCaret()); + const Sci::Position lineStart = pdoc->LineStart(lineCurrentPos); + const Sci::Position lineEnd = pdoc->LineStart(lineCurrentPos + 1); if (lParam == 0) { return 1 + lineEnd - lineStart; } @@ -6437,20 +6428,20 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return pdoc->GetLineEndTypesActive(); case SCI_STARTSTYLING: - pdoc->StartStyling(static_cast<int>(wParam)); + pdoc->StartStyling(static_cast<Sci::Position>(wParam)); break; case SCI_SETSTYLING: - if (static_cast<int>(wParam) < 0) + if (static_cast<Sci::Position>(wParam) < 0) errorStatus = SC_STATUS_FAILURE; else - pdoc->SetStyleFor(static_cast<int>(wParam), static_cast<char>(lParam)); + pdoc->SetStyleFor(static_cast<Sci::Position>(wParam), static_cast<char>(lParam)); break; case SCI_SETSTYLINGEX: // Specify a complete styling buffer if (lParam == 0) return 0; - pdoc->SetStyles(static_cast<int>(wParam), CharPtrFromSPtr(lParam)); + pdoc->SetStyles(static_cast<Sci::Position>(wParam), CharPtrFromSPtr(lParam)); break; case SCI_SETBUFFEREDDRAW: @@ -6500,21 +6491,21 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return pdoc->tabInChars; case SCI_CLEARTABSTOPS: - if (view.ClearTabstops(static_cast<int>(wParam))) { - const DocModification mh(SC_MOD_CHANGETABSTOPS, 0, 0, 0, 0, static_cast<int>(wParam)); + if (view.ClearTabstops(static_cast<Sci::Line>(wParam))) { + const DocModification mh(SC_MOD_CHANGETABSTOPS, 0, 0, 0, 0, static_cast<Sci::Line>(wParam)); NotifyModified(pdoc, mh, NULL); } break; case SCI_ADDTABSTOP: - if (view.AddTabstop(static_cast<int>(wParam), static_cast<int>(lParam))) { - const DocModification mh(SC_MOD_CHANGETABSTOPS, 0, 0, 0, 0, static_cast<int>(wParam)); + if (view.AddTabstop(static_cast<Sci::Line>(wParam), static_cast<int>(lParam))) { + const DocModification mh(SC_MOD_CHANGETABSTOPS, 0, 0, 0, 0, static_cast<Sci::Line>(wParam)); NotifyModified(pdoc, mh, NULL); } break; case SCI_GETNEXTTABSTOP: - return view.GetNextTabstop(static_cast<int>(wParam), static_cast<int>(lParam)); + return view.GetNextTabstop(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); case SCI_SETINDENT: pdoc->indentInChars = static_cast<int>(wParam); @@ -6537,14 +6528,14 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return pdoc->useTabs; case SCI_SETLINEINDENTATION: - pdoc->SetLineIndentation(static_cast<int>(wParam), static_cast<int>(lParam)); + pdoc->SetLineIndentation(static_cast<Sci::Line>(wParam), static_cast<Sci::Position>(lParam)); break; case SCI_GETLINEINDENTATION: - return pdoc->GetLineIndentation(static_cast<int>(wParam)); + return pdoc->GetLineIndentation(static_cast<Sci::Line>(wParam)); case SCI_GETLINEINDENTPOSITION: - return pdoc->GetLineIndentPosition(static_cast<int>(wParam)); + return pdoc->GetLineIndentPosition(static_cast<Sci::Line>(wParam)); case SCI_SETTABINDENTS: pdoc->tabIndents = wParam != 0; @@ -6569,13 +6560,13 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return dwellDelay; case SCI_WORDSTARTPOSITION: - return pdoc->ExtendWordSelect(static_cast<int>(wParam), -1, lParam != 0); + return pdoc->ExtendWordSelect(static_cast<Sci::Position>(wParam), -1, lParam != 0); case SCI_WORDENDPOSITION: - return pdoc->ExtendWordSelect(static_cast<int>(wParam), 1, lParam != 0); + return pdoc->ExtendWordSelect(static_cast<Sci::Position>(wParam), 1, lParam != 0); case SCI_ISRANGEWORD: - return pdoc->IsWordAt(static_cast<int>(wParam), static_cast<int>(lParam)); + return pdoc->IsWordAt(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)); case SCI_SETIDLESTYLING: idleStyling = static_cast<int>(wParam); @@ -6651,7 +6642,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_SETSCROLLWIDTH: PLATFORM_ASSERT(wParam > 0); - if ((wParam > 0) && (wParam != static_cast<unsigned int >(scrollWidth))) { + if ((wParam > 0) && (wParam != static_cast<unsigned int>(scrollWidth))) { view.lineWidthMaxSeen = 0; scrollWidth = static_cast<int>(wParam); SetScrollBars(); @@ -6711,10 +6702,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_GETCOLUMN: - return pdoc->GetColumn(static_cast<int>(wParam)); + return pdoc->GetColumn(static_cast<Sci::Position>(wParam)); case SCI_FINDCOLUMN: - return pdoc->FindColumn(static_cast<int>(wParam), static_cast<int>(lParam)); + return pdoc->FindColumn(static_cast<Sci::Line>(wParam), static_cast<Sci::Position>(lParam)); case SCI_SETHSCROLLBAR : if (horizontalScrollBarVisible != (wParam != 0)) { @@ -6759,7 +6750,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return highlightGuideColumn; case SCI_GETLINEENDPOSITION: - return pdoc->LineEnd(static_cast<int>(wParam)); + return pdoc->LineEnd(static_cast<Sci::Line>(wParam)); case SCI_SETCODEPAGE: if (ValidCodePage(static_cast<int>(wParam))) { @@ -6834,16 +6825,16 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { InvalidateStyleRedraw(); break; case SCI_MARKERADD: { - const int markerID = pdoc->AddMark(static_cast<int>(wParam), static_cast<int>(lParam)); + const int markerID = pdoc->AddMark(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); return markerID; } case SCI_MARKERADDSET: if (lParam != 0) - pdoc->AddMarkSet(static_cast<int>(wParam), static_cast<int>(lParam)); + pdoc->AddMarkSet(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); break; case SCI_MARKERDELETE: - pdoc->DeleteMark(static_cast<int>(wParam), static_cast<int>(lParam)); + pdoc->DeleteMark(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); break; case SCI_MARKERDELETEALL: @@ -6851,13 +6842,13 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_MARKERGET: - return pdoc->GetMark(static_cast<int>(wParam)); + return pdoc->GetMark(static_cast<Sci::Line>(wParam)); case SCI_MARKERNEXT: - return pdoc->MarkerNext(static_cast<int>(wParam), static_cast<int>(lParam)); + return pdoc->MarkerNext(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); case SCI_MARKERPREVIOUS: { - for (int iLine = static_cast<int>(wParam); iLine >= 0; iLine--) { + for (Sci::Line iLine = static_cast<Sci::Line>(wParam); iLine >= 0; iLine--) { if ((pdoc->GetMark(iLine) & lParam) != 0) return iLine; } @@ -7037,10 +7028,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { #endif case SCI_SETLINESTATE: - return pdoc->SetLineState(static_cast<int>(wParam), static_cast<int>(lParam)); + return pdoc->SetLineState(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); case SCI_GETLINESTATE: - return pdoc->GetLineState(static_cast<int>(wParam)); + return pdoc->GetLineState(static_cast<Sci::Line>(wParam)); case SCI_GETMAXLINESTATE: return pdoc->GetMaxLineState(); @@ -7067,7 +7058,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_GETCARETLINEBACK: return vs.caretLineBackground.AsLong(); case SCI_SETCARETLINEBACK: - vs.caretLineBackground = static_cast<int>(wParam); + vs.caretLineBackground = ColourDesired(static_cast<long>(wParam)); InvalidateStyleRedraw(); break; case SCI_GETCARETLINEBACKALPHA: @@ -7080,55 +7071,55 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { // Folding messages case SCI_VISIBLEFROMDOCLINE: - return pcs->DisplayFromDoc(static_cast<int>(wParam)); + return pcs->DisplayFromDoc(static_cast<Sci::Line>(wParam)); case SCI_DOCLINEFROMVISIBLE: - return pcs->DocFromDisplay(static_cast<int>(wParam)); + return pcs->DocFromDisplay(static_cast<Sci::Line>(wParam)); case SCI_WRAPCOUNT: - return WrapCount(static_cast<int>(wParam)); + return WrapCount(static_cast<Sci::Line>(wParam)); case SCI_SETFOLDLEVEL: { - const int prev = pdoc->SetLevel(static_cast<int>(wParam), static_cast<int>(lParam)); + const int prev = pdoc->SetLevel(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); if (prev != static_cast<int>(lParam)) RedrawSelMargin(); return prev; } case SCI_GETFOLDLEVEL: - return pdoc->GetLevel(static_cast<int>(wParam)); + return pdoc->GetLevel(static_cast<Sci::Line>(wParam)); case SCI_GETLASTCHILD: - return pdoc->GetLastChild(static_cast<int>(wParam), static_cast<int>(lParam)); + return pdoc->GetLastChild(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); case SCI_GETFOLDPARENT: - return pdoc->GetFoldParent(static_cast<int>(wParam)); + return pdoc->GetFoldParent(static_cast<Sci::Line>(wParam)); case SCI_SHOWLINES: - pcs->SetVisible(static_cast<int>(wParam), static_cast<int>(lParam), true); + pcs->SetVisible(static_cast<Sci::Line>(wParam), static_cast<Sci::Line>(lParam), true); SetScrollBars(); Redraw(); break; case SCI_HIDELINES: if (wParam > 0) - pcs->SetVisible(static_cast<int>(wParam), static_cast<int>(lParam), false); + pcs->SetVisible(static_cast<Sci::Line>(wParam), static_cast<Sci::Line>(lParam), false); SetScrollBars(); Redraw(); break; case SCI_GETLINEVISIBLE: - return pcs->GetVisible(static_cast<int>(wParam)); + return pcs->GetVisible(static_cast<Sci::Line>(wParam)); case SCI_GETALLLINESVISIBLE: return pcs->HiddenLines() ? 0 : 1; case SCI_SETFOLDEXPANDED: - SetFoldExpanded(static_cast<int>(wParam), lParam != 0); + SetFoldExpanded(static_cast<Sci::Line>(wParam), lParam != 0); break; case SCI_GETFOLDEXPANDED: - return pcs->GetExpanded(static_cast<int>(wParam)); + return pcs->GetExpanded(static_cast<Sci::Line>(wParam)); case SCI_SETAUTOMATICFOLD: foldAutomatic = static_cast<int>(wParam); @@ -7143,8 +7134,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_TOGGLEFOLDSHOWTEXT: - pcs->SetFoldDisplayText(static_cast<int>(wParam), CharPtrFromSPtr(lParam)); - FoldLine(static_cast<int>(wParam), SC_FOLDACTION_TOGGLE); + pcs->SetFoldDisplayText(static_cast<Sci::Line>(wParam), CharPtrFromSPtr(lParam)); + FoldLine(static_cast<Sci::Line>(wParam), SC_FOLDACTION_TOGGLE); break; case SCI_FOLDDISPLAYTEXTSETSTYLE: @@ -7153,15 +7144,15 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_TOGGLEFOLD: - FoldLine(static_cast<int>(wParam), SC_FOLDACTION_TOGGLE); + FoldLine(static_cast<Sci::Line>(wParam), SC_FOLDACTION_TOGGLE); break; case SCI_FOLDLINE: - FoldLine(static_cast<int>(wParam), static_cast<int>(lParam)); + FoldLine(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); break; case SCI_FOLDCHILDREN: - FoldExpand(static_cast<int>(wParam), static_cast<int>(lParam), pdoc->GetLevel(static_cast<int>(wParam))); + FoldExpand(static_cast<Sci::Line>(wParam), static_cast<int>(lParam), pdoc->GetLevel(static_cast<int>(wParam))); break; case SCI_FOLDALL: @@ -7169,22 +7160,22 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_EXPANDCHILDREN: - FoldExpand(static_cast<int>(wParam), SC_FOLDACTION_EXPAND, static_cast<int>(lParam)); + FoldExpand(static_cast<Sci::Line>(wParam), SC_FOLDACTION_EXPAND, static_cast<int>(lParam)); break; case SCI_CONTRACTEDFOLDNEXT: - return ContractedFoldNext(static_cast<int>(wParam)); + return ContractedFoldNext(static_cast<Sci::Line>(wParam)); case SCI_ENSUREVISIBLE: - EnsureLineVisible(static_cast<int>(wParam), false); + EnsureLineVisible(static_cast<Sci::Line>(wParam), false); break; case SCI_ENSUREVISIBLEENFORCEPOLICY: - EnsureLineVisible(static_cast<int>(wParam), true); + EnsureLineVisible(static_cast<Sci::Line>(wParam), true); break; case SCI_SCROLLRANGE: - ScrollRange(SelectionRange(static_cast<int>(wParam), static_cast<int>(lParam))); + ScrollRange(SelectionRange(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam))); break; case SCI_SEARCHANCHOR: @@ -7393,24 +7384,26 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return pdoc->decorations->GetCurrentValue(); case SCI_INDICATORFILLRANGE: - pdoc->DecorationFillRange(static_cast<int>(wParam), pdoc->decorations->GetCurrentValue(), static_cast<int>(lParam)); + pdoc->DecorationFillRange(static_cast<Sci::Position>(wParam), + pdoc->decorations->GetCurrentValue(), static_cast<Sci::Position>(lParam)); break; case SCI_INDICATORCLEARRANGE: - pdoc->DecorationFillRange(static_cast<int>(wParam), 0, static_cast<int>(lParam)); + pdoc->DecorationFillRange(static_cast<Sci::Position>(wParam), 0, + static_cast<Sci::Position>(lParam)); break; case SCI_INDICATORALLONFOR: - return pdoc->decorations->AllOnFor(static_cast<int>(wParam)); + return pdoc->decorations->AllOnFor(static_cast<Sci::Position>(wParam)); case SCI_INDICATORVALUEAT: - return pdoc->decorations->ValueAt(static_cast<int>(wParam), static_cast<int>(lParam)); + return pdoc->decorations->ValueAt(static_cast<int>(wParam), static_cast<Sci::Position>(lParam)); case SCI_INDICATORSTART: - return pdoc->decorations->Start(static_cast<int>(wParam), static_cast<int>(lParam)); + return pdoc->decorations->Start(static_cast<int>(wParam), static_cast<Sci::Position>(lParam)); case SCI_INDICATOREND: - return pdoc->decorations->End(static_cast<int>(wParam), static_cast<int>(lParam)); + return pdoc->decorations->End(static_cast<int>(wParam), static_cast<Sci::Position>(lParam)); case SCI_LINEDOWN: case SCI_LINEDOWNEXTEND: @@ -7508,7 +7501,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return KeyCommand(iMessage); case SCI_BRACEHIGHLIGHT: - SetBraceHighlight(static_cast<int>(wParam), static_cast<int>(lParam), STYLE_BRACELIGHT); + SetBraceHighlight(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam), STYLE_BRACELIGHT); break; case SCI_BRACEHIGHLIGHTINDICATOR: @@ -7519,7 +7512,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_BRACEBADLIGHT: - SetBraceHighlight(static_cast<int>(wParam), -1, STYLE_BRACEBAD); + SetBraceHighlight(static_cast<Sci::Position>(wParam), -1, STYLE_BRACEBAD); break; case SCI_BRACEBADLIGHTINDICATOR: @@ -7532,7 +7525,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_BRACEMATCH: // wParam is position of char to find brace for, // lParam is maximum amount of text to restyle to find it - return pdoc->BraceMatch(static_cast<int>(wParam), static_cast<int>(lParam)); + return pdoc->BraceMatch(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)); case SCI_GETVIEWEOL: return vs.viewEOL; @@ -7603,7 +7596,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_CREATEDOCUMENT: { Document *doc = new Document(static_cast<int>(lParam)); doc->AddRef(); - doc->Allocate(static_cast<int>(wParam)); + doc->Allocate(static_cast<Sci::Position>(wParam)); pcs = ContractionStateCreate(pdoc->IsLarge()); return reinterpret_cast<sptr_t>(doc); } @@ -7622,7 +7615,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_CREATELOADER: { Document *doc = new Document(static_cast<int>(lParam)); doc->AddRef(); - doc->Allocate(static_cast<int>(wParam)); + doc->Allocate(static_cast<Sci::Position>(wParam)); doc->SetUndoCollection(false); pcs = ContractionStateCreate(pdoc->IsLarge()); return reinterpret_cast<sptr_t>(static_cast<ILoader *>(doc)); @@ -7641,7 +7634,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return 0; case SCI_SETLENGTHFORENCODE: - lengthForEncode = static_cast<int>(wParam); + lengthForEncode = static_cast<Sci::Position>(wParam); return 0; case SCI_SELECTIONISRECTANGLE: @@ -7692,8 +7685,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_GETLINESELSTARTPOSITION: case SCI_GETLINESELENDPOSITION: { const SelectionSegment segmentLine( - SelectionPosition(static_cast<Sci::Position>(pdoc->LineStart(static_cast<int>(wParam)))), - SelectionPosition(static_cast<Sci::Position>(pdoc->LineEnd(static_cast<int>(wParam))))); + SelectionPosition(pdoc->LineStart(static_cast<Sci::Position>(wParam))), + SelectionPosition(pdoc->LineEnd(static_cast<Sci::Position>(wParam)))); for (size_t r=0; r<sel.Count(); r++) { const SelectionSegment portion = sel.Range(r).Intersect(segmentLine); if (portion.start.IsValid()) { @@ -7840,7 +7833,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return reinterpret_cast<sptr_t>(pdoc->BufferPointer()); case SCI_GETRANGEPOINTER: - return reinterpret_cast<sptr_t>(pdoc->RangePointer(static_cast<int>(wParam), static_cast<int>(lParam))); + return reinterpret_cast<sptr_t>(pdoc->RangePointer( + static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam))); case SCI_GETGAPPOSITION: return pdoc->GapPosition(); @@ -7877,29 +7871,29 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return marginOptions; case SCI_MARGINSETTEXT: - pdoc->MarginSetText(static_cast<int>(wParam), CharPtrFromSPtr(lParam)); + pdoc->MarginSetText(static_cast<Sci::Line>(wParam), CharPtrFromSPtr(lParam)); break; case SCI_MARGINGETTEXT: { - const StyledText st = pdoc->MarginStyledText(static_cast<int>(wParam)); + const StyledText st = pdoc->MarginStyledText(static_cast<Sci::Line>(wParam)); return BytesResult(lParam, reinterpret_cast<const unsigned char *>(st.text), st.length); } case SCI_MARGINSETSTYLE: - pdoc->MarginSetStyle(static_cast<int>(wParam), static_cast<int>(lParam)); + pdoc->MarginSetStyle(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); break; case SCI_MARGINGETSTYLE: { - const StyledText st = pdoc->MarginStyledText(static_cast<int>(wParam)); + const StyledText st = pdoc->MarginStyledText(static_cast<Sci::Line>(wParam)); return st.style; } case SCI_MARGINSETSTYLES: - pdoc->MarginSetStyles(static_cast<int>(wParam), reinterpret_cast<const unsigned char *>(lParam)); + pdoc->MarginSetStyles(static_cast<Sci::Line>(wParam), reinterpret_cast<const unsigned char *>(lParam)); break; case SCI_MARGINGETSTYLES: { - const StyledText st = pdoc->MarginStyledText(static_cast<int>(wParam)); + const StyledText st = pdoc->MarginStyledText(static_cast<Sci::Line>(wParam)); return BytesResult(lParam, st.styles, st.length); } @@ -7908,34 +7902,34 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_ANNOTATIONSETTEXT: - pdoc->AnnotationSetText(static_cast<int>(wParam), CharPtrFromSPtr(lParam)); + pdoc->AnnotationSetText(static_cast<Sci::Line>(wParam), CharPtrFromSPtr(lParam)); break; case SCI_ANNOTATIONGETTEXT: { - const StyledText st = pdoc->AnnotationStyledText(static_cast<int>(wParam)); + const StyledText st = pdoc->AnnotationStyledText(static_cast<Sci::Line>(wParam)); return BytesResult(lParam, reinterpret_cast<const unsigned char *>(st.text), st.length); } case SCI_ANNOTATIONGETSTYLE: { - const StyledText st = pdoc->AnnotationStyledText(static_cast<int>(wParam)); + const StyledText st = pdoc->AnnotationStyledText(static_cast<Sci::Line>(wParam)); return st.style; } case SCI_ANNOTATIONSETSTYLE: - pdoc->AnnotationSetStyle(static_cast<int>(wParam), static_cast<int>(lParam)); + pdoc->AnnotationSetStyle(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); break; case SCI_ANNOTATIONSETSTYLES: - pdoc->AnnotationSetStyles(static_cast<int>(wParam), reinterpret_cast<const unsigned char *>(lParam)); + pdoc->AnnotationSetStyles(static_cast<Sci::Line>(wParam), reinterpret_cast<const unsigned char *>(lParam)); break; case SCI_ANNOTATIONGETSTYLES: { - const StyledText st = pdoc->AnnotationStyledText(static_cast<int>(wParam)); + const StyledText st = pdoc->AnnotationStyledText(static_cast<Sci::Line>(wParam)); return BytesResult(lParam, st.styles, st.length); } case SCI_ANNOTATIONGETLINES: - return pdoc->AnnotationLines(static_cast<int>(wParam)); + return pdoc->AnnotationLines(static_cast<Sci::Line>(wParam)); case SCI_ANNOTATIONCLEARALL: pdoc->AnnotationClearAll(); @@ -7964,7 +7958,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return vs.AllocateExtendedStyles(static_cast<int>(wParam)); case SCI_ADDUNDOACTION: - pdoc->AddUndoAction(static_cast<int>(wParam), lParam & UNDO_MAY_COALESCE); + pdoc->AddUndoAction(static_cast<Sci::Position>(wParam), lParam & UNDO_MAY_COALESCE); break; case SCI_SETMOUSESELECTIONRECTANGULARSWITCH: @@ -8026,24 +8020,24 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_SETSELECTION: - sel.SetSelection(SelectionRange(static_cast<int>(wParam), static_cast<int>(lParam))); + sel.SetSelection(SelectionRange(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam))); Redraw(); break; case SCI_ADDSELECTION: - sel.AddSelection(SelectionRange(static_cast<int>(wParam), static_cast<int>(lParam))); + sel.AddSelection(SelectionRange(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam))); ContainerNeedsUpdate(SC_UPDATE_SELECTION); Redraw(); break; case SCI_DROPSELECTIONN: - sel.DropSelection(static_cast<int>(wParam)); + sel.DropSelection(static_cast<size_t>(wParam)); ContainerNeedsUpdate(SC_UPDATE_SELECTION); Redraw(); break; case SCI_SETMAINSELECTION: - sel.SetMain(static_cast<int>(wParam)); + sel.SetMain(static_cast<size_t>(wParam)); ContainerNeedsUpdate(SC_UPDATE_SELECTION); Redraw(); break; @@ -8082,7 +8076,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { if (!sel.IsRectangular()) sel.Clear(); sel.selType = Selection::selRectangle; - sel.Rectangular().caret.SetPosition(static_cast<int>(wParam)); + sel.Rectangular().caret.SetPosition(static_cast<Sci::Position>(wParam)); SetRectangularRange(); Redraw(); break; @@ -8094,7 +8088,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { if (!sel.IsRectangular()) sel.Clear(); sel.selType = Selection::selRectangle; - sel.Rectangular().anchor.SetPosition(static_cast<int>(wParam)); + sel.Rectangular().anchor.SetPosition(static_cast<Sci::Position>(wParam)); SetRectangularRange(); Redraw(); break; @@ -8106,7 +8100,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { if (!sel.IsRectangular()) sel.Clear(); sel.selType = Selection::selRectangle; - sel.Rectangular().caret.SetVirtualSpace(static_cast<int>(wParam)); + sel.Rectangular().caret.SetVirtualSpace(static_cast<Sci::Position>(wParam)); SetRectangularRange(); Redraw(); break; @@ -8118,7 +8112,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { if (!sel.IsRectangular()) sel.Clear(); sel.selType = Selection::selRectangle; - sel.Rectangular().anchor.SetVirtualSpace(static_cast<int>(wParam)); + sel.Rectangular().anchor.SetVirtualSpace(static_cast<Sci::Position>(wParam)); SetRectangularRange(); Redraw(); break; @@ -8178,7 +8172,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_CHANGELEXERSTATE: - pdoc->ChangeLexerState(static_cast<int>(wParam), static_cast<int>(lParam)); + pdoc->ChangeLexerState(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)); break; case SCI_SETIDENTIFIER: @@ -8196,7 +8190,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return technology; case SCI_COUNTCHARACTERS: - return pdoc->CountCharacters(static_cast<int>(wParam), static_cast<int>(lParam)); + return pdoc->CountCharacters(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)); default: return DefWndProc(iMessage, wParam, lParam); diff --git a/src/Editor.h b/src/Editor.h index db070916d..3f6f8f2c8 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -394,9 +394,9 @@ protected: // ScintillaBase subclass needs access to much of Editor void AddChar(char ch); virtual void AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS=false); void ClearBeforeTentativeStart(); - void InsertPaste(const char *text, int len); + void InsertPaste(const char *text, Sci::Position len); enum PasteShape { pasteStream=0, pasteRectangular = 1, pasteLine = 2 }; - void InsertPasteShape(const char *text, int len, PasteShape shape); + void InsertPasteShape(const char *text, Sci::Position len, PasteShape shape); void ClearSelection(bool retainMultipleSelections = false); void ClearAll(); void ClearDocumentStyle(); @@ -483,7 +483,7 @@ protected: // ScintillaBase subclass needs access to much of Editor std::string RangeText(Sci::Position start, Sci::Position end) const; void CopySelectionRange(SelectionText *ss, bool allowLineCopy=false); void CopyRangeToClipboard(Sci::Position start, Sci::Position end); - void CopyText(int length, const char *text); + void CopyText(size_t length, const char *text); void SetDragPosition(SelectionPosition newPos); virtual void DisplayCursor(Window::Cursor c); virtual bool DragThreshold(Point ptStart, Point ptNow); @@ -557,7 +557,7 @@ protected: // ScintillaBase subclass needs access to much of Editor int CodePage() const; virtual bool ValidCodePage(int /* codePage */) const { return true; } - int WrapCount(int line); + Sci::Line WrapCount(Sci::Line line); void AddStyledText(char *buffer, Sci::Position appendLength); virtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) = 0; diff --git a/src/MarginView.cxx b/src/MarginView.cxx index 02a961b10..09f1b636d 100644 --- a/src/MarginView.cxx +++ b/src/MarginView.cxx @@ -245,7 +245,7 @@ void MarginView::PaintMargin(Surface *surface, Sci::Line topLine, PRectangle rc, if (highlightDelimiter.isEnabled) { const Sci::Line lastLine = model.pcs->DocFromDisplay(topLine + model.LinesOnScreen()) + 1; model.pdoc->GetHighlightDelimiters(highlightDelimiter, - static_cast<Sci::Line>(model.pdoc->LineFromPosition(model.sel.MainCaret())), lastLine); + model.pdoc->SciLineFromPosition(model.sel.MainCaret()), lastLine); } } diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx index febc4f11f..4df4c2a13 100644 --- a/src/ScintillaBase.cxx +++ b/src/ScintillaBase.cxx @@ -247,7 +247,7 @@ void ScintillaBase::AutoCompleteStart(Sci::Position lenEntered, const char *list if (list && !strchr(list, ac.GetSeparator())) { const char *typeSep = strchr(list, ac.GetTypesep()); const Sci::Position lenInsert = typeSep ? - static_cast<Sci::Position>(typeSep-list) : static_cast<Sci::Position>(strlen(list)); + (typeSep-list) : strlen(list); if (ac.ignoreCase) { // May need to convert the case before invocation, so remove lenEntered characters AutoCompleteInsert(sel.MainCaret() - lenEntered, lenEntered, list, lenInsert); @@ -423,7 +423,7 @@ void ScintillaBase::AutoCompleteCompleted(char ch, unsigned int completionMethod endPos = pdoc->ExtendWordSelect(endPos, 1, true); if (endPos < firstPos) return; - AutoCompleteInsert(firstPos, endPos - firstPos, selected.c_str(), static_cast<Sci::Position>(selected.length())); + AutoCompleteInsert(firstPos, endPos - firstPos, selected.c_str(), selected.length()); SetLastXChosen(); scn.nmhdr.code = SCN_AUTOCCOMPLETED; @@ -656,7 +656,7 @@ void LexState::SetWordList(int n, const char *wl) { if (instance) { const Sci_Position firstModification = instance->WordListSet(n, wl); if (firstModification >= 0) { - pdoc->ModifiedAt(static_cast<Sci::Position>(firstModification)); + pdoc->ModifiedAt(firstModification); } } } @@ -702,7 +702,7 @@ void LexState::PropSet(const char *key, const char *val) { if (instance) { const Sci_Position firstModification = instance->PropertySet(key, val); if (firstModification >= 0) { - pdoc->ModifiedAt(static_cast<Sci::Position>(firstModification)); + pdoc->ModifiedAt(firstModification); } } } @@ -825,10 +825,10 @@ const char *LexState::DescriptionOfStyle(int style) { void ScintillaBase::NotifyStyleToNeeded(Sci::Position endStyleNeeded) { #ifdef SCI_LEXER if (DocumentLexState()->lexLanguage != SCLEX_CONTAINER) { - const Sci::Line lineEndStyled = static_cast<Sci::Line>( - pdoc->LineFromPosition(pdoc->GetEndStyled())); - const Sci::Position endStyled = static_cast<Sci::Position>( - pdoc->LineStart(lineEndStyled)); + const Sci::Line lineEndStyled = + pdoc->SciLineFromPosition(pdoc->GetEndStyled()); + const Sci::Position endStyled = + pdoc->LineStart(lineEndStyled); DocumentLexState()->Colourise(endStyled, endStyleNeeded); return; } @@ -984,7 +984,7 @@ sptr_t ScintillaBase::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lPara return ac.GetTypesep(); case SCI_CALLTIPSHOW: - CallTipShow(LocationFromPosition(static_cast<int>(wParam)), + CallTipShow(LocationFromPosition(static_cast<Sci::Position>(wParam)), reinterpret_cast<const char *>(lParam)); break; @@ -999,7 +999,7 @@ sptr_t ScintillaBase::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lPara return ct.posStartCallTip; case SCI_CALLTIPSETPOSSTART: - ct.posStartCallTip = static_cast<int>(wParam); + ct.posStartCallTip = static_cast<Sci::Position>(wParam); break; case SCI_CALLTIPSETHLT: @@ -1048,7 +1048,7 @@ sptr_t ScintillaBase::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lPara case SCI_COLOURISE: if (DocumentLexState()->lexLanguage == SCLEX_CONTAINER) { pdoc->ModifiedAt(static_cast<Sci::Position>(wParam)); - NotifyStyleToNeeded((lParam == -1) ? static_cast<Sci::Position>(pdoc->Length()) : + NotifyStyleToNeeded((lParam == -1) ? pdoc->Length() : static_cast<Sci::Position>(lParam)); } else { DocumentLexState()->Colourise(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)); diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index b970a7816..b08b79d34 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -770,7 +770,7 @@ Sci::Position ScintillaWin::TargetAsUTF8(char *text) { // Translates a nul terminated UTF8 string into the document encoding. // Return the length of the result in bytes. Sci::Position ScintillaWin::EncodedFromUTF8(const char *utf8, char *encoded) const { - const Sci::Position inputLength = (lengthForEncode >= 0) ? lengthForEncode : static_cast<Sci::Position>(strlen(utf8)); + const Sci::Position inputLength = (lengthForEncode >= 0) ? lengthForEncode : strlen(utf8); if (IsUnicodeMode()) { if (encoded) { memcpy(encoded, utf8, inputLength); @@ -961,7 +961,7 @@ void ScintillaWin::SelectionToHangul() { if (converted > 0) { pdoc->BeginUndoAction(); ClearSelection(); - InsertPaste(&documentStr[0], static_cast<int>(documentStr.size())); + InsertPaste(&documentStr[0], documentStr.size()); pdoc->EndUndoAction(); } } @@ -1209,7 +1209,7 @@ sptr_t ScintillaWin::GetText(uptr_t wParam, sptr_t lParam) { std::vector<char> docBytes(pdoc->Length(), '\0'); pdoc->GetCharRange(&docBytes[0], 0, pdoc->Length()); if (IsUnicodeMode()) { - size_t lengthUTF16 = UTF16Length(&docBytes[0], static_cast<unsigned int>(docBytes.size())); + size_t lengthUTF16 = UTF16Length(&docBytes[0], docBytes.size()); if (lParam == 0) return lengthUTF16; if (wParam == 0) @@ -1675,7 +1675,7 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam Sci::Position nStart = static_cast<Sci::Position>(wParam); Sci::Position nEnd = static_cast<Sci::Position>(lParam); if (nStart == 0 && nEnd == -1) { - nEnd = static_cast<Sci::Position>(pdoc->Length()); + nEnd = pdoc->Length(); } if (nStart == -1) { nStart = nEnd; // Remove selection @@ -1692,7 +1692,7 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam Sci_CharacterRange *pCR = reinterpret_cast<Sci_CharacterRange *>(lParam); sel.selType = Selection::selStream; if (pCR->cpMin == 0 && pCR->cpMax == -1) { - SetSelection(pCR->cpMin, static_cast<Sci::Position>(pdoc->Length())); + SetSelection(pCR->cpMin, pdoc->Length()); } else { SetSelection(pCR->cpMin, pCR->cpMax); } @@ -2261,7 +2261,7 @@ void ScintillaWin::Paste() { &putf[0], static_cast<int>(len) + 1, NULL, NULL); } - InsertPasteShape(&putf[0], static_cast<int>(len), pasteShape); + InsertPasteShape(&putf[0], len, pasteShape); } memUSelection.Unlock(); } else { @@ -2276,12 +2276,12 @@ void ScintillaWin::Paste() { if ((len == bytes) && (0 == ptr[i])) len = i; } - const int ilen = static_cast<int>(len); // In Unicode mode, convert clipboard text to UTF-8 if (IsUnicodeMode()) { std::vector<wchar_t> uptr(len+1); + const int ilen = static_cast<int>(len); const size_t ulen = ::MultiByteToWideChar(CP_ACP, 0, ptr, ilen, &uptr[0], ilen +1); @@ -2289,9 +2289,9 @@ void ScintillaWin::Paste() { std::vector<char> putf(mlen+1); UTF8FromUTF16(&uptr[0], ulen, &putf[0], mlen); - InsertPasteShape(&putf[0], static_cast<int>(mlen), pasteShape); + InsertPasteShape(&putf[0], mlen, pasteShape); } else { - InsertPasteShape(ptr, ilen, pasteShape); + InsertPasteShape(ptr, len, pasteShape); } } memSelection.Unlock(); @@ -2689,11 +2689,11 @@ LRESULT ScintillaWin::ImeOnReconvert(LPARAM lParam) { // Look around: baseStart <-- (|mainStart| -- mainEnd) --> baseEnd. const Sci::Position mainStart = sel.RangeMain().Start().Position(); const Sci::Position mainEnd = sel.RangeMain().End().Position(); - const Sci::Line curLine = static_cast<Sci::Line>(pdoc->LineFromPosition(mainStart)); + const Sci::Line curLine = pdoc->SciLineFromPosition(mainStart); if (curLine != pdoc->LineFromPosition(mainEnd)) return 0; - const Sci::Position baseStart = static_cast<Sci::Position>(pdoc->LineStart(curLine)); - const Sci::Position baseEnd = static_cast<Sci::Position>(pdoc->LineEnd(curLine)); + const Sci::Position baseStart = pdoc->LineStart(curLine); + const Sci::Position baseEnd = pdoc->LineEnd(curLine); if ((baseStart == baseEnd) || (mainEnd > baseEnd)) return 0; @@ -2753,7 +2753,7 @@ LRESULT ScintillaWin::ImeOnReconvert(LPARAM lParam) { } else { // Ensure docCompStart+docCompLen be not beyond lineEnd. // since docCompLen by byte might break eol. - Sci::Position lineEnd = static_cast<Sci::Position>(pdoc->LineEnd(pdoc->LineFromPosition(rBase))); + Sci::Position lineEnd = pdoc->LineEnd(pdoc->LineFromPosition(rBase)); Sci::Position overflow = (docCompStart + docCompLen) - lineEnd; if (overflow > 0) { pdoc->DeleteChars(docCompStart, docCompLen - overflow); |