亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? editor.cxx

?? porting scintilla to qt
?? CXX
?? 第 1 頁 / 共 2 頁
字號:
	int lineDoc = cs.DocFromDisplay(visibleLine);	if (lineDoc >= pdoc->LinesTotal())		return pdoc->Length();	unsigned int posLineStart = pdoc->LineStart(lineDoc);	int retVal = posLineStart;	AutoSurface surface(this);	AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc));	if (surface && ll) {		LayoutLine(lineDoc, surface, vs, ll, wrapWidth);		int lineStartSet = cs.DisplayFromDoc(lineDoc);		int subLine = visibleLine - lineStartSet;		if (subLine < ll->lines) {			int lineStart = ll->LineStart(subLine);			int lineEnd = ll->LineLastVisible(subLine);			int subLineStart = ll->positions[lineStart];			if (actualWrapVisualStartIndent != 0) {				if (lineStart != 0)	// Wrapped					pt.x -= actualWrapVisualStartIndent * vs.aveCharWidth;			}			int i = ll->FindBefore(pt.x + subLineStart, lineStart, lineEnd);			while (i < lineEnd) {				if ((pt.x + subLineStart) < ((ll->positions[i] + ll->positions[i + 1]) / 2)) {					return pdoc->MovePositionOutsideChar(i + posLineStart, 1);				}				i++;			}			return lineEnd + posLineStart;		}		retVal = ll->numCharsInLine + posLineStart;	}	return retVal;}// Like PositionFromLocation but INVALID_POSITION returned when not near any text.int Editor::PositionFromLocationClose(Point pt) {	RefreshStyleData();	PRectangle rcClient = GetTextRectangle();	if (!rcClient.Contains(pt))		return INVALID_POSITION;	if (pt.x < vs.fixedColumnWidth)		return INVALID_POSITION;	if (pt.y < 0)		return INVALID_POSITION;	pt.x = pt.x - vs.fixedColumnWidth + xOffset;	int visibleLine = pt.y / vs.lineHeight + topLine;	if (pt.y < 0) {	// Division rounds towards 0		visibleLine = (pt.y - (vs.lineHeight - 1)) / vs.lineHeight + topLine;	}	int lineDoc = cs.DocFromDisplay(visibleLine);	if (lineDoc < 0)		return INVALID_POSITION;	if (lineDoc >= pdoc->LinesTotal())		return INVALID_POSITION;	AutoSurface surface(this);	AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc));	if (surface && ll) {		LayoutLine(lineDoc, surface, vs, ll, wrapWidth);		unsigned int posLineStart = pdoc->LineStart(lineDoc);		int lineStartSet = cs.DisplayFromDoc(lineDoc);		int subLine = visibleLine - lineStartSet;		if (subLine < ll->lines) {			int lineStart = ll->LineStart(subLine);			int lineEnd = ll->LineLastVisible(subLine);			int subLineStart = ll->positions[lineStart];			if (actualWrapVisualStartIndent != 0) {				if (lineStart != 0)	// Wrapped					pt.x -= actualWrapVisualStartIndent * vs.aveCharWidth;			}			int i = ll->FindBefore(pt.x + subLineStart, lineStart, lineEnd);			while (i < lineEnd) {				if ((pt.x + subLineStart) < ((ll->positions[i] + ll->positions[i + 1]) / 2)) {					return pdoc->MovePositionOutsideChar(i + posLineStart, 1);				}				i++;			}			if (pt.x < (ll->positions[lineEnd] - subLineStart)) {				return pdoc->MovePositionOutsideChar(lineEnd + posLineStart, 1);			}		}	}	return INVALID_POSITION;}/** * Find the document position corresponding to an x coordinate on a particular document line. * Ensure is between whole characters when document is in multi-byte or UTF-8 mode. */int Editor::PositionFromLineX(int lineDoc, int x) {	RefreshStyleData();	if (lineDoc >= pdoc->LinesTotal())		return pdoc->Length();	//Platform::DebugPrintf("Position of (%d,%d) line = %d top=%d\n", pt.x, pt.y, line, topLine);	AutoSurface surface(this);	AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc));	int retVal = 0;	if (surface && ll) {		unsigned int posLineStart = pdoc->LineStart(lineDoc);		LayoutLine(lineDoc, surface, vs, ll, wrapWidth);		retVal = ll->numCharsInLine + posLineStart;		int subLine = 0;		int lineStart = ll->LineStart(subLine);		int lineEnd = ll->LineLastVisible(subLine);		int subLineStart = ll->positions[lineStart];		if (actualWrapVisualStartIndent != 0) {			if (lineStart != 0)	// Wrapped				x -= actualWrapVisualStartIndent * vs.aveCharWidth;		}		int i = ll->FindBefore(x + subLineStart, lineStart, lineEnd);		while (i < lineEnd) {			if ((x + subLineStart) < ((ll->positions[i] + ll->positions[i + 1]) / 2)) {				retVal = pdoc->MovePositionOutsideChar(i + posLineStart, 1);				break;			}			i++;		}	}	return retVal;}/** * If painting then abandon the painting because a wider redraw is needed. * @return true if calling code should stop drawing. */bool Editor::AbandonPaint() {	if ((paintState == painting) && !paintingAllText) {		paintState = paintAbandoned;	}	return paintState == paintAbandoned;}void Editor::RedrawRect(PRectangle rc) {	//Platform::DebugPrintf("Redraw %0d,%0d - %0d,%0d\n", rc.left, rc.top, rc.right, rc.bottom);	// Clip the redraw rectangle into the client area	PRectangle rcClient = GetClientRectangle();	if (rc.top < rcClient.top)		rc.top = rcClient.top;	if (rc.bottom > rcClient.bottom)		rc.bottom = rcClient.bottom;	if (rc.left < rcClient.left)		rc.left = rcClient.left;	if (rc.right > rcClient.right)		rc.right = rcClient.right;	if ((rc.bottom > rc.top) && (rc.right > rc.left)) {		wMain.InvalidateRectangle(rc);	}}void Editor::Redraw() {	//Platform::DebugPrintf("Redraw all\n");	PRectangle rcClient = GetClientRectangle();	wMain.InvalidateRectangle(rcClient);	//wMain.InvalidateAll();}void Editor::RedrawSelMargin(int line) {	if (!AbandonPaint()) {		if (vs.maskInLine) {			Redraw();		} else {			PRectangle rcSelMargin = GetClientRectangle();			rcSelMargin.right = vs.fixedColumnWidth;			if (line != -1) {				int position = pdoc->LineStart(line);				PRectangle rcLine = RectangleFromRange(position, position);				rcSelMargin.top = rcLine.top;				rcSelMargin.bottom = rcLine.bottom;			}			wMain.InvalidateRectangle(rcSelMargin);		}	}}PRectangle Editor::RectangleFromRange(int start, int end) {	int minPos = start;	if (minPos > end)		minPos = end;	int maxPos = start;	if (maxPos < end)		maxPos = end;	int minLine = cs.DisplayFromDoc(pdoc->LineFromPosition(minPos));	int lineDocMax = pdoc->LineFromPosition(maxPos);	int maxLine = cs.DisplayFromDoc(lineDocMax) + cs.GetHeight(lineDocMax) - 1;	PRectangle rcClient = GetTextRectangle();	PRectangle rc;	rc.left = vs.fixedColumnWidth;	rc.top = (minLine - topLine) * vs.lineHeight;	if (rc.top < 0)		rc.top = 0;	rc.right = rcClient.right;	rc.bottom = (maxLine - topLine + 1) * vs.lineHeight;	// Ensure PRectangle is within 16 bit space	rc.top = Platform::Clamp(rc.top, -32000, 32000);	rc.bottom = Platform::Clamp(rc.bottom, -32000, 32000);	return rc;}void Editor::InvalidateRange(int start, int end) {	RedrawRect(RectangleFromRange(start, end));}int Editor::CurrentPosition() {	return currentPos;}bool Editor::SelectionEmpty() {	return anchor == currentPos;}int Editor::SelectionStart() {	return Platform::Minimum(currentPos, anchor);}int Editor::SelectionEnd() {	return Platform::Maximum(currentPos, anchor);}void Editor::SetRectangularRange() {	if (selType == selRectangle) {		xStartSelect = XFromPosition(anchor);		xEndSelect = XFromPosition(currentPos);	}}void Editor::InvalidateSelection(int currentPos_, int anchor_, bool invalidateWholeSelection) {	if (anchor != anchor_ || selType == selRectangle) {		invalidateWholeSelection = true;	}	int firstAffected = currentPos;	if (invalidateWholeSelection) {		if (firstAffected > anchor)			firstAffected = anchor;		if (firstAffected > anchor_)			firstAffected = anchor_;	}	if (firstAffected > currentPos_)		firstAffected = currentPos_;	int lastAffected = currentPos;	if (invalidateWholeSelection) {		if (lastAffected < anchor)			lastAffected = anchor;		if (lastAffected < anchor_)			lastAffected = anchor_;	}	if (lastAffected < (currentPos_ + 1))	// +1 ensures caret repainted		lastAffected = (currentPos_ + 1);	needUpdateUI = true;	InvalidateRange(firstAffected, lastAffected);}void Editor::SetSelection(int currentPos_, int anchor_) {	currentPos_ = pdoc->ClampPositionIntoDocument(currentPos_);	anchor_ = pdoc->ClampPositionIntoDocument(anchor_);	if ((currentPos != currentPos_) || (anchor != anchor_)) {		InvalidateSelection(currentPos_, anchor_, true);		currentPos = currentPos_;		anchor = anchor_;	}	SetRectangularRange();	ClaimSelection();}void Editor::SetSelection(int currentPos_) {	currentPos_ = pdoc->ClampPositionIntoDocument(currentPos_);	if (currentPos != currentPos_) {		InvalidateSelection(currentPos_, anchor, false);		currentPos = currentPos_;	}	SetRectangularRange();	ClaimSelection();}void Editor::SetEmptySelection(int currentPos_) {	selType = selStream;	moveExtendsSelection = false;	SetSelection(currentPos_, currentPos_);}bool Editor::RangeContainsProtected(int start, int end) const {	if (vs.ProtectionActive()) {		if (start > end) {			int t = start;			start = end;			end = t;		}		int mask = pdoc->stylingBitsMask;		for (int pos = start; pos < end; pos++) {			if (vs.styles[pdoc->StyleAt(pos) & mask].IsProtected())				return true;		}	}	return false;}bool Editor::SelectionContainsProtected() {	// DONE, but untested...: make support rectangular selection	bool scp = false;	if (selType == selStream) {		scp = RangeContainsProtected(anchor, currentPos);	} else {		SelectionLineIterator lineIterator(this);		while (lineIterator.Iterate()) {			if (RangeContainsProtected(lineIterator.startPos, lineIterator.endPos)) {				scp = true;				break;			}		}	}	return scp;}/** * Asks document to find a good position and then moves out of any invisible positions. */int Editor::MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd) {	pos = pdoc->MovePositionOutsideChar(pos, moveDir, checkLineEnd);	if (vs.ProtectionActive()) {		int mask = pdoc->stylingBitsMask;		if (moveDir > 0) {			if ((pos > 0) && vs.styles[pdoc->StyleAt(pos - 1) & mask].IsProtected()) {				while ((pos < pdoc->Length()) &&				        (vs.styles[pdoc->StyleAt(pos) & mask].IsProtected()))					pos++;			}		} else if (moveDir < 0) {			if (vs.styles[pdoc->StyleAt(pos) & mask].IsProtected()) {				while ((pos > 0) &&				        (vs.styles[pdoc->StyleAt(pos - 1) & mask].IsProtected()))					pos--;			}		}	}	return pos;}int Editor::MovePositionTo(int newPos, selTypes sel, bool ensureVisible) {	int delta = newPos - currentPos;	newPos = pdoc->ClampPositionIntoDocument(newPos);	newPos = MovePositionOutsideChar(newPos, delta);	if (sel != noSel) {		selType = sel;	}	if (sel != noSel || moveExtendsSelection) {		SetSelection(newPos);	} else {		SetEmptySelection(newPos);	}	ShowCaretAtCurrentPosition();	if (ensureVisible) {		EnsureCaretVisible();	}	NotifyMove(newPos);	return 0;}int Editor::MovePositionSoVisible(int pos, int moveDir) {	pos = pdoc->ClampPositionIntoDocument(pos);	pos = MovePositionOutsideChar(pos, moveDir);	int lineDoc = pdoc->LineFromPosition(pos);	if (cs.GetVisible(lineDoc)) {		return pos;	} else {		int lineDisplay = cs.DisplayFromDoc(lineDoc);		if (moveDir > 0) {			// lineDisplay is already line before fold as lines in fold use display line of line after fold			lineDisplay = Platform::Clamp(lineDisplay, 0, cs.LinesDisplayed());			return pdoc->LineStart(cs.DocFromDisplay(lineDisplay));		} else {			lineDisplay = Platform::Clamp(lineDisplay - 1, 0, cs.LinesDisplayed());			return pdoc->LineEnd(cs.DocFromDisplay(lineDisplay));		}	}}/** * Choose the x position that the caret will try to stick to * as it moves up and down. */void Editor::SetLastXChosen() {	Point pt = LocationFromPosition(currentPos);	lastXChosen = pt.x;}void Editor::ScrollTo(int line, bool moveThumb) {	int topLineNew = Platform::Clamp(line, 0, MaxScrollPos());	if (topLineNew != topLine) {		// Try to optimise small scrolls		int linesToMove = topLine - topLineNew;		SetTopLine(topLineNew);		ShowCaretAtCurrentPosition();		// Perform redraw rather than scroll if many lines would be redrawn anyway.#ifndef UNDER_CE		if ((abs(linesToMove) <= 10) && (paintState == notPainting)) {			ScrollText(linesToMove);		} else {			Redraw();		}#else		Redraw();#endif		if (moveThumb) {			SetVerticalScrollPos();		}	}}void Editor::ScrollText(int /* linesToMove */) {	//Platform::DebugPrintf("Editor::ScrollText %d\n", linesToMove);	Redraw();}void Editor::HorizontalScrollTo(int xPos) {	//Platform::DebugPrintf("HorizontalScroll %d\n", xPos);	if (xPos < 0)		xPos = 0;	if ((wrapState == eWrapNone) && (xOffset != xPos)) {		xOffset = xPos;		SetHorizontalScrollPos();		RedrawRect(GetClientRectangle());	}}void Editor::MoveCaretInsideView(bool ensureVisible) {	PRectangle rcClient = GetTextRectangle();	Point pt = LocationFromPosition(currentPos);	if (pt.y < rcClient.top) {		MovePositionTo(PositionFromLocation(		            Point(lastXChosen, rcClient.top)),		        noSel, ensureVisible);	} else if ((pt.y + vs.lineHeight - 1) > rcClient.bottom) {		int yOfLastLineFullyDisplayed = rcClient.top + (LinesOnScreen() - 1) * vs.lineHeight;		MovePositionTo(PositionFromLocation(		            Point(lastXChosen, rcClient.top + yOfLastLineFullyDisplayed)),		        noSel, ensureVisible);	}}int Editor::DisplayFromPosition(int pos) {	int lineDoc = pdoc->LineFromPosition(pos);	int lineDisplay = cs.DisplayFromDoc(lineDoc);	AutoSurface surface(this);	AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc));	if (surface && ll) {		LayoutLine(lineDoc, surface, vs, ll, wrapWidth);		unsigned int posLineStart = pdoc->LineStart(lineDoc);		int posInLine = pos - posLineStart;		lineDisplay--; // To make up for first increment ahead.		for (int subLine = 0; subLine < ll->lines; subLine++) {			if (posInLine >= ll->LineStart(subLine)) {				lineDisplay++;			}		}	}	return lineDisplay;}/** * Ensure the caret is reasonably visible in context. *Caret policy in SciTEIf slop is set, we can define a slop value.This value defines an unwanted zone (UZ) where the caret is... unwanted.This zone is defined as a number of pixels near the vertical margins,and as a number of lines near the horizontal margins.By keeping the caret away from the edges, it is seen within its context,so it is likely that the identifier that the caret is on can be completely seen,and that the current line is seen with some of the lines following it which areoften dependent on that line.If strict is set, the policy is enforced... strictly.The caret is centred on the display if slop is not set,and cannot go in the UZ if slop is set.If jumps is set, the display is moved more energeticallyso the caret can move in the same direction longer before the policy is applied again.'3UZ' notation is used to indicate three time the size of the UZ as a distance to the margin.If even is not set, instead of having symmetrical UZs,the left and bottom UZs are extended up to right and top UZs respectively.This way, we favour the displaying of useful information: the begining of lines,where most code reside, and the lines after the caret, eg. the body of a function.     |        |       |      |                                            |slop | strict | jumps | even | Caret can go to the margin                 | When reaching limit

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av电影一区| 免费一级片91| 亚洲人成网站在线| 一区二区三区欧美久久| 亚洲私人黄色宅男| 亚洲乱码国产乱码精品精小说| 日本一区二区三区dvd视频在线| 国产亚洲人成网站| 国产精品成人午夜| 日日嗨av一区二区三区四区| 亚洲成av人片观看| 美女被吸乳得到大胸91| 日本伊人午夜精品| 大尺度一区二区| 欧美少妇性性性| 久久精品亚洲一区二区三区浴池| 欧美激情一区二区三区蜜桃视频| 亚洲欧美视频在线观看| 免费高清成人在线| 97久久超碰国产精品| 欧美疯狂做受xxxx富婆| 国产日韩欧美精品电影三级在线| 专区另类欧美日韩| 国产一区二区三区四区五区美女 | 激情图区综合网| 亚洲精品免费在线观看| 亚洲国产一区在线观看| 国精产品一区一区三区mba视频| 91欧美激情一区二区三区成人| 日韩一区二区电影| 亚洲自拍偷拍网站| 99久久99久久精品国产片果冻| 欧美日韩日日夜夜| 亚洲国产日韩av| 91麻豆精品视频| 中文字幕中文字幕一区| 国产成人免费视频精品含羞草妖精| 4438成人网| 蜜桃精品视频在线观看| 精品视频999| 天堂久久一区二区三区| 欧美亚洲一区三区| 亚洲一区欧美一区| 欧美色涩在线第一页| 亚洲精品国产品国语在线app| 不卡av电影在线播放| 国产精品国产三级国产aⅴ无密码| 久久成人麻豆午夜电影| 91精品福利视频| 亚洲精品亚洲人成人网| 一本色道久久综合狠狠躁的推荐| 中文字幕日本不卡| 91蝌蚪porny| 亚洲成a人v欧美综合天堂下载| 欧美日韩免费高清一区色橹橹| 午夜精品在线看| 日韩欧美亚洲国产另类| 国产精品一线二线三线| 亚洲欧洲性图库| 欧美日韩一级黄| 成人免费观看视频| 丝袜美腿亚洲色图| 国产精品国产三级国产| 欧美丰满美乳xxx高潮www| 狠狠色综合色综合网络| 亚洲天堂精品视频| 久久综合久久久久88| 91成人国产精品| 国产精品正在播放| 天使萌一区二区三区免费观看| 久久嫩草精品久久久久| 欧美日韩成人综合在线一区二区| 国产精品一区一区| 精品系列免费在线观看| 一区二区三区四区五区视频在线观看| 日韩欧美电影一区| 欧美日本视频在线| 色综合天天综合| www.色精品| av不卡在线观看| 国产91色综合久久免费分享| 日韩二区三区四区| 一区二区三区欧美日韩| 一区二区三区免费观看| 国产精品欧美久久久久一区二区 | 国产精品午夜久久| 国产欧美一区二区三区鸳鸯浴| 欧美xxxxx裸体时装秀| 欧美一区三区二区| 欧美一区二区黄色| www精品美女久久久tv| 国产亚洲成年网址在线观看| 久久久不卡网国产精品二区| 337p日本欧洲亚洲大胆精品| 欧美成人在线直播| 欧美经典一区二区| 久久久久久久久岛国免费| 久久久久久亚洲综合| 国产精品久久777777| 亚洲精品老司机| 捆绑调教一区二区三区| 国产很黄免费观看久久| 一本色道久久加勒比精品| 在线观看日韩电影| 欧美大胆一级视频| 国产精品久久久一区麻豆最新章节| 亚洲欧洲另类国产综合| 日韩主播视频在线| 粗大黑人巨茎大战欧美成人| 色激情天天射综合网| 欧美不卡在线视频| 一区二区三区电影在线播| 久久不见久久见中文字幕免费| a级精品国产片在线观看| 欧美精品在线观看播放| 国产精品久久久久9999吃药| 久久精品二区亚洲w码| 日本国产一区二区| 亚洲色图.com| 国产成人综合亚洲网站| 日韩视频免费观看高清完整版 | 捆绑紧缚一区二区三区视频 | 国产视频一区二区三区在线观看| 1区2区3区精品视频| 激情图区综合网| 精品sm捆绑视频| 制服丝袜中文字幕一区| 中文字幕不卡的av| 在线电影一区二区三区| 亚洲精品乱码久久久久久| 99久久精品国产麻豆演员表| 久久婷婷久久一区二区三区| 蜜桃精品在线观看| 欧美一区二区三区小说| 免费成人性网站| 欧美tk丨vk视频| 美腿丝袜在线亚洲一区| 久久久天堂av| 国产69精品久久99不卡| 国产日韩欧美不卡| 成人的网站免费观看| 中文字幕亚洲一区二区va在线| 99久久国产综合精品色伊| 亚洲欧美色综合| 日韩一区二区三区电影| 国产高清成人在线| 亚洲欧美偷拍卡通变态| 日韩一级二级三级精品视频| 精品一区二区三区免费播放| 久久久国产综合精品女国产盗摄| 成人综合在线视频| 日韩福利电影在线观看| 久久久高清一区二区三区| 91欧美激情一区二区三区成人| 亚洲一二三级电影| 久久综合成人精品亚洲另类欧美 | 欧美另类高清zo欧美| 国产综合成人久久大片91| 亚洲最大色网站| 国产片一区二区| 欧美电视剧在线看免费| 色婷婷综合久色| 国产传媒日韩欧美成人| 日韩精品亚洲专区| 一区二区三区欧美视频| 国产亚洲综合色| 久久久综合激的五月天| 欧美日韩精品三区| 91精品1区2区| www.亚洲人| eeuss国产一区二区三区| 国产精品一区二区久久精品爱涩 | 欧美日韩卡一卡二| 色综合久久中文综合久久牛| 成人av片在线观看| 久久99深爱久久99精品| 青青青爽久久午夜综合久久午夜| 亚洲成av人综合在线观看| 亚洲综合色视频| 日本中文字幕不卡| 久久aⅴ国产欧美74aaa| 国产在线观看免费一区| 国产一区二区不卡在线| 成人免费视频视频| 波多野结衣精品在线| 色综合激情久久| 欧美精品v日韩精品v韩国精品v| 欧美日韩国产欧美日美国产精品| 欧美日韩亚洲综合| 日韩欧美第一区| 国产精品久线在线观看| 亚洲日本电影在线| 午夜私人影院久久久久| 成人永久看片免费视频天堂| 91成人在线免费观看| 日韩精品最新网址| 亚洲免费观看在线视频| 午夜精品福利在线| 成人免费看片app下载| 欧美三级日韩在线|