diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Editor.cxx | 318 | ||||
| -rw-r--r-- | src/Editor.h | 13 | ||||
| -rw-r--r-- | src/Geometry.h | 4 | ||||
| -rw-r--r-- | src/ScintillaBase.cxx | 12 | ||||
| -rw-r--r-- | src/ViewStyle.cxx | 2 | ||||
| -rw-r--r-- | src/ViewStyle.h | 4 | 
6 files changed, 183 insertions, 170 deletions
| diff --git a/src/Editor.cxx b/src/Editor.cxx index 3ddd9daae..da22161c6 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -5708,10 +5708,10 @@ void Editor::StyleSetMessage(Message iMessage, uptr_t wParam, sptr_t lParam) {  	vs.EnsureStyle(wParam);  	switch (iMessage) {  	case Message::StyleSetFore: -		vs.styles[wParam].fore = ColourRGBA::FromRGB(static_cast<int>(lParam)); +		vs.styles[wParam].fore = ColourRGBA::FromIpRGB(lParam);  		break;  	case Message::StyleSetBack: -		vs.styles[wParam].back = ColourRGBA::FromRGB(static_cast<int>(lParam)); +		vs.styles[wParam].back = ColourRGBA::FromIpRGB(lParam);  		break;  	case Message::StyleSetBold:  		vs.styles[wParam].weight = lParam != 0 ? FontWeight::Bold : FontWeight::Normal; @@ -5925,7 +5925,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::CopyRange: -		CopyRangeToClipboard(static_cast<Sci::Position>(wParam), lParam); +		CopyRangeToClipboard(PositionFromUPtr(wParam), lParam);  		break;  	case Message::CopyText: @@ -5945,7 +5945,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		if (!sel.Empty()) {  			ClearSelection(); // want to replace rectangular selection contents  		} -		InsertPasteShape(CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam), PasteShape::rectangular); +		InsertPasteShape(CharPtrFromSPtr(lParam), PositionFromUPtr(wParam), PasteShape::rectangular);  		break;  	} @@ -5971,14 +5971,14 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return topLine;  	case Message::SetFirstVisibleLine: -		ScrollTo(static_cast<Sci::Line>(wParam)); +		ScrollTo(LineFromUPtr(wParam));  		break;  	case Message::GetLine: {	// Risk of overwriting the end of the buffer  			const Sci::Position lineStart = -				pdoc->LineStart(static_cast<Sci::Line>(wParam)); +				pdoc->LineStart(LineFromUPtr(wParam));  			const Sci::Position lineEnd = -				pdoc->LineStart(static_cast<Sci::Line>(wParam + 1)); +				pdoc->LineStart(LineFromUPtr(wParam + 1));  			// not NUL terminated  			const Sci::Position len = lineEnd - lineStart;  			if (lParam == 0) { @@ -5999,7 +5999,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return !pdoc->IsSavePoint();  	case Message::SetSel: { -			Sci::Position nStart = static_cast<Sci::Position>(wParam); +			Sci::Position nStart = PositionFromUPtr(wParam);  			Sci::Position nEnd = lParam;  			if (nEnd < 0)  				nEnd = pdoc->Length(); @@ -6032,27 +6032,27 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		}  	case Message::LineFromPosition: -		if (static_cast<Sci::Position>(wParam) < 0) +		if (PositionFromUPtr(wParam) < 0)  			return 0; -		return pdoc->LineFromPosition(static_cast<Sci::Position>(wParam)); +		return pdoc->LineFromPosition(PositionFromUPtr(wParam));  	case Message::PositionFromLine: -		if (static_cast<Sci::Position>(wParam) < 0) +		if (LineFromUPtr(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 -		if (static_cast<Sci::Line>(wParam) > pdoc->LinesTotal()) +		if (LineFromUPtr(wParam) > pdoc->LinesTotal())  			return -1;  		//if (wParam > pdoc->LineFromPosition(pdoc->Length()))	// Useful test, anyway...  		//	return -1; -		return pdoc->LineStart(static_cast<Sci::Position>(wParam)); +		return pdoc->LineStart(LineFromUPtr(wParam));  		// Replacement of the old Scintilla interpretation of EM_LINELENGTH  	case Message::LineLength: -		if ((static_cast<Sci::Position>(wParam) < 0) || -		        (static_cast<Sci::Position>(wParam) > pdoc->LineFromPosition(pdoc->Length()))) +		if ((LineFromUPtr(wParam) < 0) || +		        (LineFromUPtr(wParam) > pdoc->LineFromPosition(pdoc->Length())))  			return 0; -		return pdoc->LineStart(static_cast<Sci::Position>(wParam) + 1) - pdoc->LineStart(static_cast<Sci::Position>(wParam)); +		return pdoc->LineStart(LineFromUPtr(wParam) + 1) - pdoc->LineStart(LineFromUPtr(wParam));  	case Message::ReplaceSel: {  			if (lParam == 0) @@ -6069,35 +6069,35 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::SetTargetStart: -		targetRange.start.SetPosition(static_cast<Sci::Position>(wParam)); +		targetRange.start.SetPosition(PositionFromUPtr(wParam));  		break;  	case Message::GetTargetStart:  		return targetRange.start.Position();  	case Message::SetTargetStartVirtualSpace: -		targetRange.start.SetVirtualSpace(static_cast<Sci::Position>(wParam)); +		targetRange.start.SetVirtualSpace(PositionFromUPtr(wParam));  		break;  	case Message::GetTargetStartVirtualSpace:  		return targetRange.start.VirtualSpace();  	case Message::SetTargetEnd: -		targetRange.end.SetPosition(static_cast<Sci::Position>(wParam)); +		targetRange.end.SetPosition(PositionFromUPtr(wParam));  		break;  	case Message::GetTargetEnd:  		return targetRange.end.Position();  	case Message::SetTargetEndVirtualSpace: -		targetRange.end.SetVirtualSpace(static_cast<Sci::Position>(wParam)); +		targetRange.end.SetVirtualSpace(PositionFromUPtr(wParam));  		break;  	case Message::GetTargetEndVirtualSpace:  		return targetRange.end.VirtualSpace();  	case Message::SetTargetRange: -		targetRange.start.SetPosition(static_cast<Sci::Position>(wParam)); +		targetRange.start.SetPosition(PositionFromUPtr(wParam));  		targetRange.end.SetPosition(lParam);  		break; @@ -6118,15 +6118,15 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::ReplaceTarget:  		PLATFORM_ASSERT(lParam); -		return ReplaceTarget(false, CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); +		return ReplaceTarget(false, CharPtrFromSPtr(lParam), PositionFromUPtr(wParam));  	case Message::ReplaceTargetRE:  		PLATFORM_ASSERT(lParam); -		return ReplaceTarget(true, CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); +		return ReplaceTarget(true, CharPtrFromSPtr(lParam), PositionFromUPtr(wParam));  	case Message::SearchInTarget:  		PLATFORM_ASSERT(lParam); -		return SearchInTarget(CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); +		return SearchInTarget(CharPtrFromSPtr(lParam), PositionFromUPtr(wParam));  	case Message::SetSearchFlags:  		searchFlags = static_cast<FindOption>(wParam); @@ -6139,23 +6139,23 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return GetTag(CharPtrFromSPtr(lParam), static_cast<int>(wParam));  	case Message::PositionBefore: -		return pdoc->MovePositionOutsideChar(static_cast<Sci::Position>(wParam) - 1, -1, true); +		return pdoc->MovePositionOutsideChar(PositionFromUPtr(wParam) - 1, -1, true);  	case Message::PositionAfter: -		return pdoc->MovePositionOutsideChar(static_cast<Sci::Position>(wParam) + 1, 1, true); +		return pdoc->MovePositionOutsideChar(PositionFromUPtr(wParam) + 1, 1, true);  	case Message::PositionRelative:  		return std::clamp<Sci::Position>(pdoc->GetRelativePosition( -			static_cast<Sci::Position>(wParam), lParam), +			PositionFromUPtr(wParam), lParam),  			0, pdoc->Length());  	case Message::PositionRelativeCodeUnits:  		return std::clamp<Sci::Position>(pdoc->GetRelativePositionUTF16( -			static_cast<Sci::Position>(wParam), lParam), +			PositionFromUPtr(wParam), lParam),  			0, pdoc->Length());  	case Message::LineScroll: -		ScrollTo(topLine + static_cast<Sci::Line>(lParam)); +		ScrollTo(topLine + lParam);  		HorizontalScrollTo(xOffset + static_cast<int>(wParam) * static_cast<int>(vs.spaceWidth));  		return 1; @@ -6253,20 +6253,20 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  			if (lParam == 0)  				return 0;  			const Sci::Position lengthInserted = pdoc->InsertString( -				CurrentPosition(), CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); +				CurrentPosition(), CharPtrFromSPtr(lParam), PositionFromUPtr(wParam));  			SetEmptySelection(sel.MainCaret() + lengthInserted);  			return 0;  		}  	case Message::AddStyledText:  		if (lParam) -			AddStyledText(CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); +			AddStyledText(CharPtrFromSPtr(lParam), PositionFromUPtr(wParam));  		return 0;  	case Message::InsertText: {  			if (lParam == 0)  				return 0; -			Sci::Position insertPos = static_cast<Sci::Position>(wParam); +			Sci::Position insertPos = PositionFromUPtr(wParam);  			if (insertPos == -1)  				insertPos = CurrentPosition();  			Sci::Position newCurrent = CurrentPosition(); @@ -6280,12 +6280,12 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::ChangeInsertion:  		PLATFORM_ASSERT(lParam); -		pdoc->ChangeInsertion(CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); +		pdoc->ChangeInsertion(CharPtrFromSPtr(lParam), PositionFromUPtr(wParam));  		return 0;  	case Message::AppendText:  		pdoc->InsertString(pdoc->Length(), -			CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); +			CharPtrFromSPtr(lParam), PositionFromUPtr(wParam));  		return 0;  	case Message::ClearAll: @@ -6293,7 +6293,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return 0;  	case Message::DeleteRange: -		pdoc->DeleteChars(static_cast<Sci::Position>(wParam), lParam); +		pdoc->DeleteChars(PositionFromUPtr(wParam), lParam);  		return 0;  	case Message::ClearDocumentStyle: @@ -6368,19 +6368,19 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return pdoc->Length();  	case Message::Allocate: -		pdoc->Allocate(static_cast<Sci::Position>(wParam)); +		pdoc->Allocate(PositionFromUPtr(wParam));  		break;  	case Message::GetCharAt: -		return pdoc->CharAt(static_cast<Sci::Position>(wParam)); +		return pdoc->CharAt(PositionFromUPtr(wParam));  	case Message::SetCurrentPos:  		if (sel.IsRectangular()) { -			sel.Rectangular().caret.SetPosition(static_cast<Sci::Position>(wParam)); +			sel.Rectangular().caret.SetPosition(PositionFromUPtr(wParam));  			SetRectangularRange();  			Redraw();  		} else { -			SetSelection(static_cast<Sci::Position>(wParam), sel.MainAnchor()); +			SetSelection(PositionFromUPtr(wParam), sel.MainAnchor());  		}  		break; @@ -6389,11 +6389,11 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::SetAnchor:  		if (sel.IsRectangular()) { -			sel.Rectangular().anchor.SetPosition(static_cast<Sci::Position>(wParam)); +			sel.Rectangular().anchor.SetPosition(PositionFromUPtr(wParam));  			SetRectangularRange();  			Redraw();  		} else { -			SetSelection(sel.MainCaret(), static_cast<Sci::Position>(wParam)); +			SetSelection(sel.MainCaret(), PositionFromUPtr(wParam));  		}  		break; @@ -6401,21 +6401,21 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return sel.IsRectangular() ? sel.Rectangular().anchor.Position() : sel.MainAnchor();  	case Message::SetSelectionStart: -		SetSelection(std::max(sel.MainCaret(), static_cast<Sci::Position>(wParam)), static_cast<Sci::Position>(wParam)); +		SetSelection(std::max(sel.MainCaret(), PositionFromUPtr(wParam)), PositionFromUPtr(wParam));  		break;  	case Message::GetSelectionStart:  		return sel.LimitsForRectangularElseMain().start.Position();  	case Message::SetSelectionEnd: -		SetSelection(static_cast<Sci::Position>(wParam), std::min(sel.MainAnchor(), static_cast<Sci::Position>(wParam))); +		SetSelection(PositionFromUPtr(wParam), std::min(sel.MainAnchor(), PositionFromUPtr(wParam)));  		break;  	case Message::GetSelectionEnd:  		return sel.LimitsForRectangularElseMain().end.Position();  	case Message::SetEmptySelection: -		SetEmptySelection(static_cast<Sci::Position>(wParam)); +		SetEmptySelection(PositionFromUPtr(wParam));  		break;  	case Message::SetPrintMagnification: @@ -6440,10 +6440,10 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return static_cast<sptr_t>(view.printParameters.wrapState);  	case Message::GetStyleAt: -		if (static_cast<Sci::Position>(wParam) >= pdoc->Length()) +		if (PositionFromUPtr(wParam) >= pdoc->Length())  			return 0;  		else -			return pdoc->StyleAt(static_cast<Sci::Position>(wParam)); +			return pdoc->StyleAt(PositionFromUPtr(wParam));  	case Message::Redo:  		Redo(); @@ -6482,10 +6482,10 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::MarkerHandleFromLine: -		return pdoc->MarkerHandleFromLine(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +		return pdoc->MarkerHandleFromLine(LineFromUPtr(wParam), static_cast<int>(lParam));  	case Message::MarkerNumberFromLine: -		return pdoc->MarkerNumberFromLine(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +		return pdoc->MarkerNumberFromLine(LineFromUPtr(wParam), static_cast<int>(lParam));  	case Message::GetViewWS:  		return static_cast<sptr_t>(vs.viewWhitespace); @@ -6512,27 +6512,23 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::PositionFromPoint: -		return PositionFromLocation(Point::FromInts(static_cast<int>(wParam) - vs.ExternalMarginWidth(), static_cast<int>(lParam)), -					    false, false); +		return PositionFromLocation(PointFromParameters(wParam, lParam), false, false);  	case Message::PositionFromPointClose: -		return PositionFromLocation(Point::FromInts(static_cast<int>(wParam) - vs.ExternalMarginWidth(), static_cast<int>(lParam)), -					    true, false); +		return PositionFromLocation(PointFromParameters(wParam, lParam), true, false);  	case Message::CharPositionFromPoint: -		return PositionFromLocation(Point::FromInts(static_cast<int>(wParam) - vs.ExternalMarginWidth(), static_cast<int>(lParam)), -					    false, true); +		return PositionFromLocation(PointFromParameters(wParam, lParam), false, true);  	case Message::CharPositionFromPointClose: -		return PositionFromLocation(Point::FromInts(static_cast<int>(wParam) - vs.ExternalMarginWidth(), static_cast<int>(lParam)), -					    true, true); +		return PositionFromLocation(PointFromParameters(wParam, lParam), true, true);  	case Message::GotoLine: -		GoToLine(static_cast<Sci::Line>(wParam)); +		GoToLine(LineFromUPtr(wParam));  		break;  	case Message::GotoPos: -		SetEmptySelection(static_cast<Sci::Position>(wParam)); +		SetEmptySelection(PositionFromUPtr(wParam));  		EnsureCaretVisible();  		break; @@ -6577,20 +6573,20 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return static_cast<sptr_t>(pdoc->GetLineEndTypesActive());  	case Message::StartStyling: -		pdoc->StartStyling(static_cast<Sci::Position>(wParam)); +		pdoc->StartStyling(PositionFromUPtr(wParam));  		break;  	case Message::SetStyling: -		if (static_cast<Sci::Position>(wParam) < 0) +		if (PositionFromUPtr(wParam) < 0)  			errorStatus = Status::Failure;  		else -			pdoc->SetStyleFor(static_cast<Sci::Position>(wParam), static_cast<char>(lParam)); +			pdoc->SetStyleFor(PositionFromUPtr(wParam), static_cast<char>(lParam));  		break;  	case Message::SetStylingEx:             // Specify a complete styling buffer  		if (lParam == 0)  			return 0; -		pdoc->SetStyles(static_cast<Sci::Position>(wParam), CharPtrFromSPtr(lParam)); +		pdoc->SetStyles(PositionFromUPtr(wParam), CharPtrFromSPtr(lParam));  		break;  	case Message::SetBufferedDraw: @@ -6648,21 +6644,21 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return view.tabWidthMinimumPixels;  	case Message::ClearTabStops: -		if (view.ClearTabstops(static_cast<Sci::Line>(wParam))) { -			const DocModification mh(ModificationFlags::ChangeTabStops, 0, 0, 0, nullptr, static_cast<Sci::Line>(wParam)); +		if (view.ClearTabstops(LineFromUPtr(wParam))) { +			const DocModification mh(ModificationFlags::ChangeTabStops, 0, 0, 0, nullptr, LineFromUPtr(wParam));  			NotifyModified(pdoc, mh, nullptr);  		}  		break;  	case Message::AddTabStop: -		if (view.AddTabstop(static_cast<Sci::Line>(wParam), static_cast<int>(lParam))) { -			const DocModification mh(ModificationFlags::ChangeTabStops, 0, 0, 0, nullptr, static_cast<Sci::Line>(wParam)); +		if (view.AddTabstop(LineFromUPtr(wParam), static_cast<int>(lParam))) { +			const DocModification mh(ModificationFlags::ChangeTabStops, 0, 0, 0, nullptr, LineFromUPtr(wParam));  			NotifyModified(pdoc, mh, nullptr);  		}  		break;  	case Message::GetNextTabStop: -		return view.GetNextTabstop(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +		return view.GetNextTabstop(LineFromUPtr(wParam), static_cast<int>(lParam));  	case Message::SetIndent:  		pdoc->indentInChars = static_cast<int>(wParam); @@ -6685,14 +6681,14 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return pdoc->useTabs;  	case Message::SetLineIndentation: -		pdoc->SetLineIndentation(static_cast<Sci::Line>(wParam), lParam); +		pdoc->SetLineIndentation(LineFromUPtr(wParam), lParam);  		break;  	case Message::GetLineIndentation: -		return pdoc->GetLineIndentation(static_cast<Sci::Line>(wParam)); +		return pdoc->GetLineIndentation(LineFromUPtr(wParam));  	case Message::GetLineIndentPosition: -		return pdoc->GetLineIndentPosition(static_cast<Sci::Line>(wParam)); +		return pdoc->GetLineIndentPosition(LineFromUPtr(wParam));  	case Message::SetTabIndents:  		pdoc->tabIndents = wParam != 0; @@ -6717,13 +6713,13 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return dwellDelay;  	case Message::WordStartPosition: -		return pdoc->ExtendWordSelect(static_cast<Sci::Position>(wParam), -1, lParam != 0); +		return pdoc->ExtendWordSelect(PositionFromUPtr(wParam), -1, lParam != 0);  	case Message::WordEndPosition: -		return pdoc->ExtendWordSelect(static_cast<Sci::Position>(wParam), 1, lParam != 0); +		return pdoc->ExtendWordSelect(PositionFromUPtr(wParam), 1, lParam != 0);  	case Message::IsRangeWord: -		return pdoc->IsWordAt(static_cast<Sci::Position>(wParam), lParam); +		return pdoc->IsWordAt(PositionFromUPtr(wParam), lParam);  	case Message::SetIdleStyling:  		idleStyling = static_cast<IdleStyling>(wParam); @@ -6861,10 +6857,10 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::GetColumn: -		return pdoc->GetColumn(static_cast<Sci::Position>(wParam)); +		return pdoc->GetColumn(PositionFromUPtr(wParam));  	case Message::FindColumn: -		return pdoc->FindColumn(static_cast<Sci::Line>(wParam), lParam); +		return pdoc->FindColumn(LineFromUPtr(wParam), lParam);  	case Message::SetHScrollBar :  		if (horizontalScrollBarVisible != (wParam != 0)) { @@ -6909,7 +6905,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return highlightGuideColumn;  	case Message::GetLineEndPosition: -		return pdoc->LineEnd(static_cast<Sci::Line>(wParam)); +		return pdoc->LineEnd(LineFromUPtr(wParam));  	case Message::SetCodePage:  		if (ValidCodePage(static_cast<int>(wParam))) { @@ -6952,10 +6948,10 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::LineFromIndexPosition: -		return pdoc->LineFromPositionIndex(static_cast<Sci::Position>(wParam), static_cast<LineCharacterIndexType>(lParam)); +		return pdoc->LineFromPositionIndex(PositionFromUPtr(wParam), static_cast<LineCharacterIndexType>(lParam));  	case Message::IndexPositionFromLine: -		return pdoc->IndexLineStart(static_cast<Sci::Line>(wParam), static_cast<LineCharacterIndexType>(lParam)); +		return pdoc->IndexLineStart(LineFromUPtr(wParam), static_cast<LineCharacterIndexType>(lParam));  		// Marker definition and setting  	case Message::MarkerDefine: @@ -6975,19 +6971,19 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::MarkerSetFore:  		if (wParam <= MarkerMax) -			vs.markers[wParam].fore = ColourRGBA::FromRGB(static_cast<int>(lParam)); +			vs.markers[wParam].fore = ColourRGBA::FromIpRGB(lParam);  		InvalidateStyleData();  		RedrawSelMargin();  		break;  	case Message::MarkerSetBack:  		if (wParam <= MarkerMax) -			vs.markers[wParam].back = ColourRGBA::FromRGB(static_cast<int>(lParam)); +			vs.markers[wParam].back = ColourRGBA::FromIpRGB(lParam);  		InvalidateStyleData();  		RedrawSelMargin();  		break;  	case Message::MarkerSetBackSelected:  		if (wParam <= MarkerMax) -			vs.markers[wParam].backSelected = ColourRGBA::FromRGB(static_cast<int>(lParam)); +			vs.markers[wParam].backSelected = ColourRGBA::FromIpRGB(lParam);  		InvalidateStyleData();  		RedrawSelMargin();  		break; @@ -7041,16 +7037,16 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		}  		return 0;  	case Message::MarkerAdd: { -			const int markerID = pdoc->AddMark(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +			const int markerID = pdoc->AddMark(LineFromUPtr(wParam), static_cast<int>(lParam));  			return markerID;  		}  	case Message::MarkerAddSet:  		if (lParam != 0) -			pdoc->AddMarkSet(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +			pdoc->AddMarkSet(LineFromUPtr(wParam), static_cast<int>(lParam));  		break;  	case Message::MarkerDelete: -		pdoc->DeleteMark(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +		pdoc->DeleteMark(LineFromUPtr(wParam), static_cast<int>(lParam));  		break;  	case Message::MarkerDeleteAll: @@ -7058,13 +7054,13 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::MarkerGet: -		return pdoc->GetMark(static_cast<Sci::Line>(wParam)); +		return pdoc->GetMark(LineFromUPtr(wParam));  	case Message::MarkerNext: -		return pdoc->MarkerNext(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +		return pdoc->MarkerNext(LineFromUPtr(wParam), static_cast<int>(lParam));  	case Message::MarkerPrevious: { -			for (Sci::Line iLine = static_cast<Sci::Line>(wParam); iLine >= 0; iLine--) { +			for (Sci::Line iLine = LineFromUPtr(wParam); iLine >= 0; iLine--) {  				if ((pdoc->GetMark(iLine) & lParam) != 0)  					return iLine;  			} @@ -7170,7 +7166,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::SetMarginBackN:  		if (ValidMargin(wParam)) { -			vs.ms[wParam].back = ColourRGBA::FromRGB(static_cast<int>(lParam)); +			vs.ms[wParam].back = ColourRGBA::FromIpRGB(lParam);  			InvalidateStyleRedraw();  		}  		break; @@ -7278,10 +7274,10 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  #endif  	case Message::SetLineState: -		return pdoc->SetLineState(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +		return pdoc->SetLineState(LineFromUPtr(wParam), static_cast<int>(lParam));  	case Message::GetLineState: -		return pdoc->GetLineState(static_cast<Sci::Line>(wParam)); +		return pdoc->GetLineState(LineFromUPtr(wParam));  	case Message::GetMaxLineState:  		return pdoc->GetMaxLineState(); @@ -7353,55 +7349,55 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		// Folding messages  	case Message::VisibleFromDocLine: -		return pcs->DisplayFromDoc(static_cast<Sci::Line>(wParam)); +		return pcs->DisplayFromDoc(LineFromUPtr(wParam));  	case Message::DocLineFromVisible: -		return pcs->DocFromDisplay(static_cast<Sci::Line>(wParam)); +		return pcs->DocFromDisplay(LineFromUPtr(wParam));  	case Message::WrapCount: -		return WrapCount(static_cast<Sci::Line>(wParam)); +		return WrapCount(LineFromUPtr(wParam));  	case Message::SetFoldLevel: { -			const int prev = pdoc->SetLevel(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +			const int prev = pdoc->SetLevel(LineFromUPtr(wParam), static_cast<int>(lParam));  			if (prev != static_cast<int>(lParam))  				RedrawSelMargin();  			return prev;  		}  	case Message::GetFoldLevel: -		return pdoc->GetLevel(static_cast<Sci::Line>(wParam)); +		return pdoc->GetLevel(LineFromUPtr(wParam));  	case Message::GetLastChild: -		return pdoc->GetLastChild(static_cast<Sci::Line>(wParam), OptionalFoldLevel(lParam)); +		return pdoc->GetLastChild(LineFromUPtr(wParam), OptionalFoldLevel(lParam));  	case Message::GetFoldParent: -		return pdoc->GetFoldParent(static_cast<Sci::Line>(wParam)); +		return pdoc->GetFoldParent(LineFromUPtr(wParam));  	case Message::ShowLines: -		pcs->SetVisible(static_cast<Sci::Line>(wParam), static_cast<Sci::Line>(lParam), true); +		pcs->SetVisible(LineFromUPtr(wParam), lParam, true);  		SetScrollBars();  		Redraw();  		break;  	case Message::HideLines:  		if (wParam > 0) -			pcs->SetVisible(static_cast<Sci::Line>(wParam), static_cast<Sci::Line>(lParam), false); +			pcs->SetVisible(LineFromUPtr(wParam), lParam, false);  		SetScrollBars();  		Redraw();  		break;  	case Message::GetLineVisible: -		return pcs->GetVisible(static_cast<Sci::Line>(wParam)); +		return pcs->GetVisible(LineFromUPtr(wParam));  	case Message::GetAllLinesVisible:  		return pcs->HiddenLines() ? 0 : 1;  	case Message::SetFoldExpanded: -		SetFoldExpanded(static_cast<Sci::Line>(wParam), lParam != 0); +		SetFoldExpanded(LineFromUPtr(wParam), lParam != 0);  		break;  	case Message::GetFoldExpanded: -		return pcs->GetExpanded(static_cast<Sci::Line>(wParam)); +		return pcs->GetExpanded(LineFromUPtr(wParam));  	case Message::SetAutomaticFold:  		foldAutomatic = static_cast<AutomaticFold>(wParam); @@ -7416,8 +7412,8 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::ToggleFoldShowText: -		pcs->SetFoldDisplayText(static_cast<Sci::Line>(wParam), CharPtrFromSPtr(lParam)); -		FoldLine(static_cast<Sci::Line>(wParam), FoldAction::Toggle); +		pcs->SetFoldDisplayText(LineFromUPtr(wParam), CharPtrFromSPtr(lParam)); +		FoldLine(LineFromUPtr(wParam), FoldAction::Toggle);  		break;  	case Message::FoldDisplayTextSetStyle: @@ -7437,15 +7433,15 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return StringResult(lParam, GetDefaultFoldDisplayText());  	case Message::ToggleFold: -		FoldLine(static_cast<Sci::Line>(wParam), FoldAction::Toggle); +		FoldLine(LineFromUPtr(wParam), FoldAction::Toggle);  		break;  	case Message::FoldLine: -		FoldLine(static_cast<Sci::Line>(wParam), static_cast<FoldAction>(lParam)); +		FoldLine(LineFromUPtr(wParam), static_cast<FoldAction>(lParam));  		break;  	case Message::FoldChildren: -		FoldExpand(static_cast<Sci::Line>(wParam), static_cast<FoldAction>(lParam), pdoc->GetFoldLevel(static_cast<Sci::Line>(wParam))); +		FoldExpand(LineFromUPtr(wParam), static_cast<FoldAction>(lParam), pdoc->GetFoldLevel(LineFromUPtr(wParam)));  		break;  	case Message::FoldAll: @@ -7453,22 +7449,22 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::ExpandChildren: -		FoldExpand(static_cast<Sci::Line>(wParam), FoldAction::Expand, static_cast<FoldLevel>(lParam)); +		FoldExpand(LineFromUPtr(wParam), FoldAction::Expand, static_cast<FoldLevel>(lParam));  		break;  	case Message::ContractedFoldNext: -		return ContractedFoldNext(static_cast<Sci::Line>(wParam)); +		return ContractedFoldNext(LineFromUPtr(wParam));  	case Message::EnsureVisible: -		EnsureLineVisible(static_cast<Sci::Line>(wParam), false); +		EnsureLineVisible(LineFromUPtr(wParam), false);  		break;  	case Message::EnsureVisibleEnforcePolicy: -		EnsureLineVisible(static_cast<Sci::Line>(wParam), true); +		EnsureLineVisible(LineFromUPtr(wParam), true);  		break;  	case Message::ScrollRange: -		ScrollRange(SelectionRange(static_cast<Sci::Position>(wParam), lParam)); +		ScrollRange(SelectionRange(PositionFromUPtr(wParam), lParam));  		break;  	case Message::SearchAnchor: @@ -7563,7 +7559,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return static_cast<sptr_t>(vs.selection.layer);  	case Message::SetCaretFore: -		vs.elementColours[Element::Caret] = ColourRGBA::FromRGB(static_cast<int>(wParam)); +		vs.elementColours[Element::Caret] = ColourRGBA::FromIpRGB(SPtrFromUPtr(wParam));  		InvalidateStyleRedraw();  		break; @@ -7618,8 +7614,8 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::IndicSetFore:  		if (wParam <= IndicatorMax) { -			vs.indicators[wParam].sacNormal.fore = ColourRGBA::FromRGB(static_cast<int>(lParam)); -			vs.indicators[wParam].sacHover.fore = ColourRGBA::FromRGB(static_cast<int>(lParam)); +			vs.indicators[wParam].sacNormal.fore = ColourRGBA::FromIpRGB(lParam); +			vs.indicators[wParam].sacHover.fore = ColourRGBA::FromIpRGB(lParam);  			InvalidateStyleRedraw();  		}  		break; @@ -7641,7 +7637,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::IndicSetHoverFore:  		if (wParam <= IndicatorMax) { -			vs.indicators[wParam].sacHover.fore = ColourRGBA::FromRGB(static_cast<int>(lParam)); +			vs.indicators[wParam].sacHover.fore = ColourRGBA::FromIpRGB(lParam);  			InvalidateStyleRedraw();  		}  		break; @@ -7718,17 +7714,17 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return pdoc->decorations->GetCurrentValue();  	case Message::IndicatorFillRange: -		pdoc->DecorationFillRange(static_cast<Sci::Position>(wParam), +		pdoc->DecorationFillRange(PositionFromUPtr(wParam),  			pdoc->decorations->GetCurrentValue(), lParam);  		break;  	case Message::IndicatorClearRange: -		pdoc->DecorationFillRange(static_cast<Sci::Position>(wParam), 0, +		pdoc->DecorationFillRange(PositionFromUPtr(wParam), 0,  			lParam);  		break;  	case Message::IndicatorAllOnFor: -		return pdoc->decorations->AllOnFor(static_cast<Sci::Position>(wParam)); +		return pdoc->decorations->AllOnFor(PositionFromUPtr(wParam));  	case Message::IndicatorValueAt:  		return pdoc->decorations->ValueAt(static_cast<int>(wParam), lParam); @@ -7835,7 +7831,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return KeyCommand(iMessage);  	case Message::BraceHighlight: -		SetBraceHighlight(static_cast<Sci::Position>(wParam), lParam, StyleBraceLight); +		SetBraceHighlight(PositionFromUPtr(wParam), lParam, StyleBraceLight);  		break;  	case Message::BraceHighlightIndicator: @@ -7846,7 +7842,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::BraceBadLight: -		SetBraceHighlight(static_cast<Sci::Position>(wParam), -1, StyleBraceBad); +		SetBraceHighlight(PositionFromUPtr(wParam), -1, StyleBraceBad);  		break;  	case Message::BraceBadLightIndicator: @@ -7859,10 +7855,10 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::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<Sci::Position>(wParam), lParam, 0, false); +		return pdoc->BraceMatch(PositionFromUPtr(wParam), lParam, 0, false);  	case Message::BraceMatchNext: -		return pdoc->BraceMatch(static_cast<Sci::Position>(wParam), 0, lParam, true); +		return pdoc->BraceMatch(PositionFromUPtr(wParam), 0, lParam, true);  	case Message::GetViewEOL:  		return vs.viewEOL; @@ -7905,7 +7901,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return vs.theEdge.colour.OpaqueRGB();  	case Message::SetEdgeColour: -		vs.theEdge.colour = ColourRGBA::FromRGB(static_cast<int>(wParam)); +		vs.theEdge.colour = ColourRGBA::FromIpRGB(SPtrFromUPtr(wParam));  		InvalidateStyleRedraw();  		break; @@ -7946,7 +7942,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::CreateDocument: {  			Document *doc = new Document(static_cast<DocumentOption>(lParam));  			doc->AddRef(); -			doc->Allocate(static_cast<Sci::Position>(wParam)); +			doc->Allocate(PositionFromUPtr(wParam));  			pcs = ContractionStateCreate(pdoc->IsLarge());  			return reinterpret_cast<sptr_t>(doc);  		} @@ -7965,7 +7961,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::CreateLoader: {  			Document *doc = new Document(static_cast<DocumentOption>(lParam));  			doc->AddRef(); -			doc->Allocate(static_cast<Sci::Position>(wParam)); +			doc->Allocate(PositionFromUPtr(wParam));  			doc->SetUndoCollection(false);  			pcs = ContractionStateCreate(pdoc->IsLarge());  			return reinterpret_cast<sptr_t>(static_cast<ILoader *>(doc)); @@ -7991,7 +7987,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return 0;  	case Message::SetLengthForEncode: -		lengthForEncode = static_cast<Sci::Position>(wParam); +		lengthForEncode = PositionFromUPtr(wParam);  		return 0;  	case Message::SelectionIsRectangle: @@ -8042,8 +8038,8 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::GetLineSelStartPosition:  	case Message::GetLineSelEndPosition: {  			const SelectionSegment segmentLine( -				SelectionPosition(pdoc->LineStart(static_cast<Sci::Position>(wParam))), -				SelectionPosition(pdoc->LineEnd(static_cast<Sci::Position>(wParam)))); +				SelectionPosition(pdoc->LineStart(LineFromUPtr(wParam))), +				SelectionPosition(pdoc->LineEnd(LineFromUPtr(wParam))));  			for (size_t r=0; r<sel.Count(); r++) {  				const SelectionSegment portion = sel.Range(r).Intersect(segmentLine);  				if (portion.start.IsValid()) { @@ -8223,7 +8219,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::GetRangePointer:  		return reinterpret_cast<sptr_t>(pdoc->RangePointer( -			static_cast<Sci::Position>(wParam), lParam)); +			PositionFromUPtr(wParam), lParam));  	case Message::GetGapPosition:  		return pdoc->GapPosition(); @@ -8260,29 +8256,29 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return static_cast<sptr_t>(marginOptions);  	case Message::MarginSetText: -		pdoc->MarginSetText(static_cast<Sci::Line>(wParam), CharPtrFromSPtr(lParam)); +		pdoc->MarginSetText(LineFromUPtr(wParam), CharPtrFromSPtr(lParam));  		break;  	case Message::MarginGetText: { -			const StyledText st = pdoc->MarginStyledText(static_cast<Sci::Line>(wParam)); +			const StyledText st = pdoc->MarginStyledText(LineFromUPtr(wParam));  			return BytesResult(lParam, reinterpret_cast<const unsigned char *>(st.text), st.length);  		}  	case Message::MarginSetStyle: -		pdoc->MarginSetStyle(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +		pdoc->MarginSetStyle(LineFromUPtr(wParam), static_cast<int>(lParam));  		break;  	case Message::MarginGetStyle: { -			const StyledText st = pdoc->MarginStyledText(static_cast<Sci::Line>(wParam)); +			const StyledText st = pdoc->MarginStyledText(LineFromUPtr(wParam));  			return st.style;  		}  	case Message::MarginSetStyles: -		pdoc->MarginSetStyles(static_cast<Sci::Line>(wParam), ConstUCharPtrFromSPtr(lParam)); +		pdoc->MarginSetStyles(LineFromUPtr(wParam), ConstUCharPtrFromSPtr(lParam));  		break;  	case Message::MarginGetStyles: { -			const StyledText st = pdoc->MarginStyledText(static_cast<Sci::Line>(wParam)); +			const StyledText st = pdoc->MarginStyledText(LineFromUPtr(wParam));  			return BytesResult(lParam, st.styles, st.length);  		} @@ -8291,34 +8287,34 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::AnnotationSetText: -		pdoc->AnnotationSetText(static_cast<Sci::Line>(wParam), CharPtrFromSPtr(lParam)); +		pdoc->AnnotationSetText(LineFromUPtr(wParam), CharPtrFromSPtr(lParam));  		break;  	case Message::AnnotationGetText: { -			const StyledText st = pdoc->AnnotationStyledText(static_cast<Sci::Line>(wParam)); +			const StyledText st = pdoc->AnnotationStyledText(LineFromUPtr(wParam));  			return BytesResult(lParam, reinterpret_cast<const unsigned char *>(st.text), st.length);  		}  	case Message::AnnotationGetStyle: { -			const StyledText st = pdoc->AnnotationStyledText(static_cast<Sci::Line>(wParam)); +			const StyledText st = pdoc->AnnotationStyledText(LineFromUPtr(wParam));  			return st.style;  		}  	case Message::AnnotationSetStyle: -		pdoc->AnnotationSetStyle(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +		pdoc->AnnotationSetStyle(LineFromUPtr(wParam), static_cast<int>(lParam));  		break;  	case Message::AnnotationSetStyles: -		pdoc->AnnotationSetStyles(static_cast<Sci::Line>(wParam), ConstUCharPtrFromSPtr(lParam)); +		pdoc->AnnotationSetStyles(LineFromUPtr(wParam), ConstUCharPtrFromSPtr(lParam));  		break;  	case Message::AnnotationGetStyles: { -			const StyledText st = pdoc->AnnotationStyledText(static_cast<Sci::Line>(wParam)); +			const StyledText st = pdoc->AnnotationStyledText(LineFromUPtr(wParam));  			return BytesResult(lParam, st.styles, st.length);  		}  	case Message::AnnotationGetLines: -		return pdoc->AnnotationLines(static_cast<Sci::Line>(wParam)); +		return pdoc->AnnotationLines(LineFromUPtr(wParam));  	case Message::AnnotationClearAll:  		pdoc->AnnotationClearAll(); @@ -8340,21 +8336,21 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return vs.annotationStyleOffset;  	case Message::EOLAnnotationSetText: -		pdoc->EOLAnnotationSetText(static_cast<Sci::Line>(wParam), CharPtrFromSPtr(lParam)); +		pdoc->EOLAnnotationSetText(LineFromUPtr(wParam), CharPtrFromSPtr(lParam));  		break;  	case Message::EOLAnnotationGetText: { -			const StyledText st = pdoc->EOLAnnotationStyledText(static_cast<Sci::Line>(wParam)); +			const StyledText st = pdoc->EOLAnnotationStyledText(LineFromUPtr(wParam));  			return BytesResult(lParam, reinterpret_cast<const unsigned char *>(st.text), st.length);  		}  	case Message::EOLAnnotationGetStyle: { -			const StyledText st = pdoc->EOLAnnotationStyledText(static_cast<Sci::Line>(wParam)); +			const StyledText st = pdoc->EOLAnnotationStyledText(LineFromUPtr(wParam));  			return st.style;  		}  	case Message::EOLAnnotationSetStyle: -		pdoc->EOLAnnotationSetStyle(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +		pdoc->EOLAnnotationSetStyle(LineFromUPtr(wParam), static_cast<int>(lParam));  		break;  	case Message::EOLAnnotationClearAll: @@ -8387,7 +8383,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return SupportsFeature(static_cast<Supports>(wParam));  	case Message::AddUndoAction: -		pdoc->AddUndoAction(static_cast<Sci::Position>(wParam), +		pdoc->AddUndoAction(PositionFromUPtr(wParam),  			FlagSet(static_cast<UndoFlags>(lParam), UndoFlags::MayCoalesce));  		break; @@ -8450,24 +8446,24 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::SetSelection: -		sel.SetSelection(SelectionRange(static_cast<Sci::Position>(wParam), lParam)); +		sel.SetSelection(SelectionRange(PositionFromUPtr(wParam), lParam));  		Redraw();  		break;  	case Message::AddSelection: -		sel.AddSelection(SelectionRange(static_cast<Sci::Position>(wParam), lParam)); +		sel.AddSelection(SelectionRange(PositionFromUPtr(wParam), lParam));  		ContainerNeedsUpdate(Update::Selection);  		Redraw();  		break;  	case Message::DropSelectionN: -		sel.DropSelection(static_cast<size_t>(wParam)); +		sel.DropSelection(wParam);  		ContainerNeedsUpdate(Update::Selection);  		Redraw();  		break;  	case Message::SetMainSelection: -		sel.SetMain(static_cast<size_t>(wParam)); +		sel.SetMain(wParam);  		ContainerNeedsUpdate(Update::Selection);  		Redraw();  		break; @@ -8512,7 +8508,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		if (!sel.IsRectangular())  			sel.Clear();  		sel.selType = Selection::SelTypes::rectangle; -		sel.Rectangular().caret.SetPosition(static_cast<Sci::Position>(wParam)); +		sel.Rectangular().caret.SetPosition(PositionFromUPtr(wParam));  		SetRectangularRange();  		Redraw();  		break; @@ -8524,7 +8520,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		if (!sel.IsRectangular())  			sel.Clear();  		sel.selType = Selection::SelTypes::rectangle; -		sel.Rectangular().anchor.SetPosition(static_cast<Sci::Position>(wParam)); +		sel.Rectangular().anchor.SetPosition(PositionFromUPtr(wParam));  		SetRectangularRange();  		Redraw();  		break; @@ -8536,7 +8532,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		if (!sel.IsRectangular())  			sel.Clear();  		sel.selType = Selection::SelTypes::rectangle; -		sel.Rectangular().caret.SetVirtualSpace(static_cast<Sci::Position>(wParam)); +		sel.Rectangular().caret.SetVirtualSpace(PositionFromUPtr(wParam));  		SetRectangularRange();  		Redraw();  		break; @@ -8548,7 +8544,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		if (!sel.IsRectangular())  			sel.Clear();  		sel.selType = Selection::SelTypes::rectangle; -		sel.Rectangular().anchor.SetVirtualSpace(static_cast<Sci::Position>(wParam)); +		sel.Rectangular().anchor.SetVirtualSpace(PositionFromUPtr(wParam));  		SetRectangularRange();  		Redraw();  		break; @@ -8564,7 +8560,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return static_cast<sptr_t>(virtualSpaceOptions);  	case Message::SetAdditionalSelFore: -		vs.elementColours[Element::SelectionAdditionalText] = ColourRGBA::FromRGB(static_cast<int>(wParam)); +		vs.elementColours[Element::SelectionAdditionalText] = ColourRGBA::FromIpRGB(SPtrFromUPtr(wParam));  		InvalidateStyleRedraw();  		break; @@ -8584,7 +8580,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return vs.ElementColour(Element::SelectionAdditionalBack)->GetAlpha();  	case Message::SetAdditionalCaretFore: -		vs.elementColours[Element::CaretAdditional] = ColourRGBA::FromRGB(static_cast<int>(wParam)); +		vs.elementColours[Element::CaretAdditional] = ColourRGBA::FromIpRGB(SPtrFromUPtr(wParam));  		InvalidateStyleRedraw();  		break; @@ -8610,7 +8606,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::ChangeLexerState: -		pdoc->ChangeLexerState(static_cast<Sci::Position>(wParam), lParam); +		pdoc->ChangeLexerState(PositionFromUPtr(wParam), lParam);  		break;  	case Message::SetIdentifier: @@ -8628,10 +8624,10 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		return static_cast<sptr_t>(technology);  	case Message::CountCharacters: -		return pdoc->CountCharacters(static_cast<Sci::Position>(wParam), lParam); +		return pdoc->CountCharacters(PositionFromUPtr(wParam), lParam);  	case Message::CountCodeUnits: -		return pdoc->CountUTF16(static_cast<Sci::Position>(wParam), lParam); +		return pdoc->CountUTF16(PositionFromUPtr(wParam), lParam);  	default:  		return DefWndProc(iMessage, wParam, lParam); diff --git a/src/Editor.h b/src/Editor.h index 9af2add43..417700ed5 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -624,6 +624,19 @@ protected:	// ScintillaBase subclass needs access to much of Editor  		return static_cast<const char *>(PtrFromUPtr(wParam));  	} +	static constexpr Scintilla::sptr_t SPtrFromUPtr(Scintilla::uptr_t wParam) noexcept { +		return static_cast<Scintilla::sptr_t>(wParam); +	} +	static constexpr Sci::Position PositionFromUPtr(Scintilla::uptr_t wParam) noexcept { +		return SPtrFromUPtr(wParam); +	} +	static constexpr Sci::Line LineFromUPtr(Scintilla::uptr_t wParam) noexcept { +		return SPtrFromUPtr(wParam); +	} +	Point PointFromParameters(Scintilla::uptr_t wParam, Scintilla::sptr_t lParam) const noexcept { +		return Point(static_cast<XYPOSITION>(wParam) - vs.ExternalMarginWidth(), static_cast<XYPOSITION>(lParam)); +	} +  	constexpr std::optional<FoldLevel> OptionalFoldLevel(Scintilla::sptr_t lParam) {  		if (lParam >= 0) {  			return static_cast<FoldLevel>(lParam); diff --git a/src/Geometry.h b/src/Geometry.h index e471bdfc0..6456af0e8 100644 --- a/src/Geometry.h +++ b/src/Geometry.h @@ -180,6 +180,10 @@ public:  		return ColourRGBA(co_ | (0xffu << 24));  	} +	static constexpr ColourRGBA FromIpRGB(intptr_t co_) noexcept { +		return ColourRGBA(static_cast<int>(co_) | (0xffu << 24)); +	} +  	constexpr ColourRGBA WithoutAlpha() const noexcept {  		return ColourRGBA(co & 0xffffff);  	} diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx index a6e769d81..50c8e87a7 100644 --- a/src/ScintillaBase.cxx +++ b/src/ScintillaBase.cxx @@ -846,7 +846,7 @@ sptr_t ScintillaBase::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	switch (iMessage) {  	case Message::AutoCShow:  		listType = 0; -		AutoCompleteStart(static_cast<Sci::Position>(wParam), ConstCharPtrFromSPtr(lParam)); +		AutoCompleteStart(PositionFromUPtr(wParam), ConstCharPtrFromSPtr(lParam));  		break;  	case Message::AutoCCancel: @@ -1007,19 +1007,19 @@ sptr_t ScintillaBase::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  		break;  	case Message::CallTipSetBack: -		ct.colourBG = ColourRGBA::FromRGB(static_cast<int>(wParam)); +		ct.colourBG = ColourRGBA::FromIpRGB(SPtrFromUPtr(wParam));  		vs.styles[StyleCallTip].back = ct.colourBG;  		InvalidateStyleRedraw();  		break;  	case Message::CallTipSetFore: -		ct.colourUnSel = ColourRGBA::FromRGB(static_cast<int>(wParam)); +		ct.colourUnSel = ColourRGBA::FromIpRGB(SPtrFromUPtr(wParam));  		vs.styles[StyleCallTip].fore = ct.colourUnSel;  		InvalidateStyleRedraw();  		break;  	case Message::CallTipSetForeHlt: -		ct.colourSel = ColourRGBA::FromRGB(static_cast<int>(wParam)); +		ct.colourSel = ColourRGBA::FromIpRGB(SPtrFromUPtr(wParam));  		InvalidateStyleRedraw();  		break; @@ -1046,10 +1046,10 @@ sptr_t ScintillaBase::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {  	case Message::Colourise:  		if (DocumentLexState()->UseContainerLexing()) { -			pdoc->ModifiedAt(static_cast<Sci::Position>(wParam)); +			pdoc->ModifiedAt(PositionFromUPtr(wParam));  			NotifyStyleToNeeded((lParam == -1) ? pdoc->Length() : lParam);  		} else { -			DocumentLexState()->Colourise(static_cast<Sci::Position>(wParam), lParam); +			DocumentLexState()->Colourise(PositionFromUPtr(wParam), lParam);  		}  		Redraw();  		break; diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx index a229b8a94..33b861445 100644 --- a/src/ViewStyle.cxx +++ b/src/ViewStyle.cxx @@ -586,7 +586,7 @@ bool ViewStyle::SetElementColour(Element element, ColourRGBA colour) {  bool ViewStyle::SetElementColourOptional(Element element, uptr_t wParam, sptr_t lParam) {  	if (wParam) { -		return SetElementColour(element, ColourRGBA::FromRGB(static_cast<int>(lParam))); +		return SetElementColour(element, ColourRGBA::FromIpRGB(lParam));  	} else {  		return ResetElement(element);  	} diff --git a/src/ViewStyle.h b/src/ViewStyle.h index b59f441b1..8b9f125bd 100644 --- a/src/ViewStyle.h +++ b/src/ViewStyle.h @@ -45,7 +45,7 @@ typedef std::map<FontSpecification, std::unique_ptr<FontRealised>> FontMap;  inline std::optional<ColourRGBA> OptionalColour(Scintilla::uptr_t wParam, Scintilla::sptr_t lParam) {  	if (wParam) { -		return ColourRGBA::FromRGB(static_cast<int>(lParam)); +		return ColourRGBA::FromIpRGB(lParam);  	} else {  		return {};  	} @@ -94,7 +94,7 @@ struct EdgeProperties {  		column(column_), colour(colour_) {  	}  	EdgeProperties(Scintilla::uptr_t wParam, Scintilla::sptr_t lParam) noexcept : -		column(static_cast<int>(wParam)), colour(ColourRGBA::FromRGB(static_cast<int>(lParam))) { +		column(static_cast<int>(wParam)), colour(ColourRGBA::FromIpRGB(lParam)) {  	}  }; | 
