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

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

?? defaultlinestyler.java

?? 源碼為Eclipse開源開發平臺桌面開發工具SWT的源代碼,
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
	if (newStyle == null) {		styles = new StyleRange[0];		styleExpandExp = 1;		styleCount = 0;		return;	}	if (newStyle.length ==0) return;	if (newStyle.isUnstyled()) {		clearStyle(newStyle);		return;	}		Point pt = getOverlappingStyles(newStyle.start, newStyle.length);	int newStyleEnd = newStyle.start + newStyle.length - 1;		// no styles exist	if (pt == null) {		insertStyle(newStyle, 0);		return;	}		// newStyle does not overlap any other styles	if (pt.y == 0) {		insertMergeStyle(newStyle, pt.x);		return;	} 	// the newStyle overlaps one or more of the existing styles	boolean added = false; // indicates whether or not the new style has been added	int count = 0;	// pt.x is the index of the first overlapped style, pt.y is the number of overlapped	// styles	for (int i=pt.x; count<pt.y; i++) {		StyleRange overlap = styles[i];		int overlapEnd = overlap.start + overlap.length - 1;		if (overlap.start < newStyle.start) {			if (overlapEnd <= newStyleEnd) {				// the end of overlap needs to be replaced by newStyle				if (newStyle.similarTo(overlap)) {					// update overlap to accomodate the new style					overlap.length = newStyle.start + newStyle.length - overlap.start;				} else {					overlap.length=newStyle.start - overlap.start;					// see if newStyle can be merged with the style after overlap, if so,					// processing is done					if (mergeStyleAfter(newStyle, i+1)) break;					// otherwise, insert the newStyle, newStyle may still overlap other					// styles after it so continue processing						insertStyle(newStyle, i+1);					i++;				}				added = true;			} else {				// middle of overlap needs to be replaced by newStyle, this will				// cause overlap to be broken into two				if (newStyle.similarTo(overlap)) break;				StyleRange endStyle = (StyleRange)overlap.clone();				endStyle.start = newStyleEnd + 1;				endStyle.length = overlapEnd - newStyleEnd;				overlap.length = newStyle.start - overlap.start;				insertStyle(newStyle, i+1);				i++;				insertStyle(endStyle, i+1);				// when newStyle overlaps the middle of a style, this implies that				// processing is done (no more overlapped styles)				break;			}		} else {			if (overlapEnd <= newStyleEnd) {					// overlap will be replaced by the newStyle, make sure newStyle				// hasn't already been added, if it has just delete overlap				if (!added) {					styles[i] = newStyle;					added = true;				} else {					deleteStyle(i);					i--;				}			} else {				// beginning of overlap needs to be replaced by newStyle				overlap.start=newStyleEnd + 1;				overlap.length=overlapEnd - overlap.start + 1;				if (!added) {					insertMergeStyle(newStyle, i);				}				// when newStyle overlaps only the beginning of a style, this implies 				// that processing is done (no more overlapped styles)				break;			}		}					count++;	}}/**  * Replace the styles for the given range. * <p> * * @param styles the new styles, must be in order and non-overlapping */void replaceStyleRanges(int start, int length, StyleRange[] ranges) {	clearStyle(new StyleRange(start, length, null, null));	// find insert point	int high = styleCount;	int low = -1;	int index = high;	while (high - low > 1) {		index = (high + low) / 2;		StyleRange style = styles[index];		if (start <= style.start) {			high = index;					}		else {			low = index;		}	}	insertStyles(ranges, high);}/**  * Sets the array of styles and discards old styles.  Called by StyledText. * <p> * * @param styles the new styles, must be in order and non-overlapping */void setStyleRanges(StyleRange[] styles) {	this.styles = new StyleRange[styles.length];	System.arraycopy(styles, 0, this.styles, 0, styles.length);	styleCount = styles.length;	styleExpandExp = 1;}/**  * Updates the style ranges and line backgrounds to reflect a pending text  * change. * Called by StyledText when a TextChangingEvent is received. * <p> * * @param event	the event with the text change information */  public void textChanging(TextChangingEvent event) {	int startLine = content.getLineAtOffset(event.start);	int startLineOffset = content.getOffsetAtLine(startLine);		textChanging(event.start, -event.replaceCharCount);	textChanging(event.start, event.newCharCount);		if (event.replaceCharCount == content.getCharCount()) {		// all text is going to be replaced, clear line backgrounds		linesChanging(0, -lineCount);		linesChanging(0, content.getLineCount() - event.replaceLineCount + event.newLineCount);		return;	}	if (event.start != startLineOffset) {		startLine = startLine + 1;	}				linesChanging(startLine, -event.replaceLineCount);	linesChanging(startLine, event.newLineCount);}/* * Updates the line backgrounds to reflect a pending text change. * <p> * * @param start	the starting line of the change that is about to take place * @param delta	the number of lines in the change, > 0 indicates lines inserted, * 	< 0 indicates lines deleted */void linesChanging(int start, int delta) {	if (delta == 0) return;	boolean inserting = delta > 0;	if (inserting) {		// shift the lines down to make room for new lines		expandLinesBy(delta);		for (int i = lineCount-1; i >= start; i--) {			lineBackgrounds[i + delta]=lineBackgrounds[i];		}		for (int i=start; i<start + delta; i++) {			lineBackgrounds[i]=null;		}	} else {		// shift up the lines		for (int i = start - delta; i < lineCount; i++) {			lineBackgrounds[i+delta]=lineBackgrounds[i];		}	}	lineCount += delta;}/* * Updates the style ranges to reflect a text change. * <p> * * @param start	the starting offset of the change that is about to  *	take place * @param delta	the length of the change, > 0 indicates text inserted, * 	< 0 indicates text deleted */void textChanging(int start, int delta) {	if (delta == 0) return;	StyleRange style;	// find the index of the first style for the given offset, use a binary search	// to find the index	int end;	int deleteStart = -1;	int deleteCount = 0;	boolean inserting = delta > 0;	if (inserting) {		end = (start + delta) - 1;	} else {		end = (start - delta) - 1;	}	int high = searchForStyle(start, end);	int index;	// update the styles that are in the affected range	for (index = high; index < styleCount; index++) {		style = styles[index];		if (inserting) {			if (style.start >= start) break;			// in the insert case only one style range will be directly affected,			// it will need to be split into two and then the newStyle inserted			StyleRange beforeStyle = (StyleRange)style.clone();			beforeStyle.length = start - style.start;			style.start = start;			style.length = style.length - beforeStyle.length;			if (beforeStyle.length != 0) insertStyle(beforeStyle, index);			index++;			break;		} else {			int styleEnd = style.start + style.length - 1;			if (style.start > end) break;			// in the delete case, any style that overlaps the change range will be			// affected			if (style.start < start) {				if (styleEnd <= end) {					// style starts before change range, ends in change range					style.length = start - style.start;				} else {					// style starts before change range, ends after change range					style.length = style.length + delta;					index++;					break;				}			} else {				if (styleEnd <= end) {					// style starts in change range, ends in change range					if (deleteStart == -1)	{						deleteStart = index;					} 					deleteCount++;				} else {					// style starts in change range, ends after change range					style.start = start;					style.length = styleEnd - end;					index++;					break;				}			}			}	}	deleteStyles(deleteStart, deleteCount);	// change the offsets of the styles after the affected styles	for (int i = index - deleteCount; i < styleCount; i++) {		style = styles[i];		style.start = style.start + delta;	}}/**  * Returns the indexes of the styles that overlap the given range.  Styles that partially * or fully overlap the range will be returned. * <p> * * @return Point where x is the index of the starting overlap style, y is the number of * 	styles that overlap the range */ Point getOverlappingStyles(int start, int length) {		StyleRange style;	if (styleCount == 0) return null;	// find the index of the first style for the given offset, use a binary search	// to find the index	int end = start + length - 1;	int high = searchForStyle(start, end);	int count = 0;	for (int index = high; index < styleCount; index++) {		style = styles[index];		int styleEnd = style.start + style.length - 1;		if (style.start > end) break;		if (styleEnd >= start) count++;		}	return new Point(high, count);}/**  * Returns the background color of a line.  Called by StyledText.  It is safe to return  * the existing Color object since the colors are set and managed by the client. * <p> * * @param index	the line index * @return the background color of the line at the given index */ Color getLineBackground(int index) {	return lineBackgrounds[index];}/**  * Returns the style for the character at <code>offset</code>.  Called by StyledText.   * Returns a new style.  Does not return the existing style. * <p> * * @param offset the character position in the text * @return a cloned StyleRange with start == offset and length == 1 if a style is * 	specified or null if no style is specified */ StyleRange getStyleRangeAtOffset(int offset) {	if (styleCount == 0) return null;	Point pt = getOverlappingStyles(offset, 1);	if (pt == null || pt.y == 0) return null;	StyleRange newStyle = (StyleRange)styles[pt.x].clone();	newStyle.start = offset;	newStyle.length = 1;	return newStyle;}/**  * Returns the styles for the given range. Returns the existing styles, * so be careful not to modify the return value.  Styles are not cloned * in order to make this method as efficient as possible.  * <p> * * @param offset the start position of the text range * @param length the length of the text range * @return a StyleRange array or null if no styles are specified for the text * 	range */ StyleRange[] getStyleRangesFor(int offset, int length) {	if (styleCount == 0) return null;	Point pt = getOverlappingStyles(offset, length);	if (pt == null || pt.y == 0) return null;	StyleRange[] ranges = new StyleRange[pt.y];	for (int i=0; i<pt.y; i++) {		StyleRange newStyle = styles[pt.x + i];		ranges[i]=newStyle;	}	return ranges;}void release () {	styles = null;}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区国产盗摄色噜噜| 日韩专区一卡二卡| 日韩一区二区在线观看视频播放| 国产米奇在线777精品观看| 亚洲一级二级三级在线免费观看| 久久精品一区二区三区不卡牛牛| 欧美在线观看你懂的| 成人爽a毛片一区二区免费| 日日摸夜夜添夜夜添亚洲女人| 国产精品色呦呦| 日韩欧美国产一二三区| 欧美色综合久久| 色综合天天综合网天天看片| 国内精品久久久久影院色| 亚洲成人av一区二区三区| 日韩码欧中文字| 国产欧美日韩三级| 日韩三级伦理片妻子的秘密按摩| 色国产精品一区在线观看| 丁香激情综合国产| 国产在线播放一区| 免费高清在线视频一区·| 亚洲成人av电影| 亚洲自拍偷拍九九九| 亚洲精品一二三| 亚洲图片激情小说| 国产精品久久久久久久久搜平片| 国产日韩欧美a| 久久蜜桃av一区精品变态类天堂| 日韩午夜av一区| 91麻豆精品久久久久蜜臀| 欧美日韩中文字幕一区二区| 色综合一区二区| 91免费看`日韩一区二区| 99国产精品视频免费观看| 成人综合在线观看| 国产成人综合在线观看| 国产综合色精品一区二区三区| 麻豆成人综合网| 国产一区在线视频| 国产福利一区二区三区视频| 国产一区二区在线观看视频| 国产精品91xxx| 国产精品夜夜嗨| 成人网在线免费视频| www.日韩大片| 欧美在线观看视频一区二区 | 一区二区视频在线看| 成人免费在线观看入口| 一区二区三区蜜桃| 亚洲成人动漫精品| 美女网站一区二区| 国产一区二区三区蝌蚪| 丁香天五香天堂综合| 波多野洁衣一区| 欧美最猛黑人xxxxx猛交| 欧美日韩一区久久| 精品欧美一区二区久久| 久久久高清一区二区三区| 中文字幕制服丝袜成人av| 一区在线中文字幕| 亚洲国产毛片aaaaa无费看| 日韩一区精品字幕| 狠狠色伊人亚洲综合成人| 国产a精品视频| 欧美性一区二区| 欧美一区二区三区免费| 精品av久久707| 中文字幕一区二区三区乱码在线 | 中文字幕一区二区三区色视频| 亚洲人成精品久久久久久| 亚洲大型综合色站| 韩国女主播一区| 日韩免费视频一区| 国产三级精品三级在线专区| 亚洲人成在线观看一区二区| 亚洲大片精品永久免费| av激情综合网| av一区二区三区在线| 91丨九色porny丨蝌蚪| 色999日韩国产欧美一区二区| 色婷婷久久久久swag精品 | 一本久久综合亚洲鲁鲁五月天| 不卡视频在线观看| 欧美午夜宅男影院| 日韩欧美在线1卡| 中文字幕高清不卡| 亚洲国产精品久久人人爱蜜臀| 三级欧美韩日大片在线看| 国产在线乱码一区二区三区| 丰满白嫩尤物一区二区| 在线综合视频播放| 欧美高清在线精品一区| 天天做天天摸天天爽国产一区| 狠狠色狠狠色综合日日91app| 一本大道av伊人久久综合| 日韩一级片在线播放| 中文av字幕一区| 日韩成人一级片| 欧美私人免费视频| 国产欧美一区二区精品性色超碰| 紧缚奴在线一区二区三区| 夫妻av一区二区| 亚洲精品中文在线影院| 日韩一区二区三区电影| 午夜激情一区二区| 国产欧美va欧美不卡在线| 99精品黄色片免费大全| 久久国产尿小便嘘嘘| 欧美群妇大交群中文字幕| 日韩一区欧美小说| 午夜久久电影网| 色综合中文字幕国产 | 91精品国产综合久久久久久| 成人av在线资源| www.亚洲在线| 久久亚洲综合色一区二区三区| 午夜精品成人在线| 欧日韩精品视频| 美女在线视频一区| 欧美午夜寂寞影院| 亚洲免费av高清| av在线不卡观看免费观看| 欧美国产欧美综合| 国产成人高清视频| 亚洲福中文字幕伊人影院| 色诱视频网站一区| 亚洲一区二区三区中文字幕| 欧美日韩激情在线| 日韩一区精品视频| 亚洲精品在线电影| 成人晚上爱看视频| 亚洲免费av网站| 日韩免费电影一区| 成人美女视频在线观看| 一区二区三区蜜桃网| 欧美日韩国产精品自在自线| 久久不见久久见免费视频1| 久久免费视频色| 91精品国产一区二区| 国产精品一品视频| 亚洲综合激情另类小说区| 日韩免费视频一区二区| voyeur盗摄精品| 麻豆91精品视频| 亚洲视频电影在线| 日韩精品中文字幕一区| 日本道色综合久久| 精品亚洲porn| 亚洲一二三四在线| 中文字幕av不卡| 日韩三级电影网址| 懂色av一区二区在线播放| 久久99国产精品尤物| 亚洲v日本v欧美v久久精品| 亚洲国产一区视频| 蜜桃久久精品一区二区| 日韩av中文字幕一区二区 | 国产精品99久久久久| 成人国产一区二区三区精品| 国产一本一道久久香蕉| 日本最新不卡在线| 欧美韩国日本一区| 日韩欧美在线网站| 欧美一级黄色片| 欧美日韩一二区| 一区二区高清视频在线观看| 97久久精品人人爽人人爽蜜臀| 欧美午夜影院一区| 国产亚洲人成网站| 色94色欧美sute亚洲线路一ni| 亚洲成人av在线电影| 欧美va天堂va视频va在线| 成人av资源下载| 成人白浆超碰人人人人| 一区二区三区四区在线播放| 欧美一级在线免费| 成人污污视频在线观看| 亚洲成人动漫精品| 国产日韩欧美精品电影三级在线| 日韩免费成人网| 欧美精品一区男女天堂| 国产网站一区二区| 亚洲日本在线观看| 午夜精品久久久久久久99樱桃| 亚洲一二三四久久| 日av在线不卡| 成人高清视频在线观看| 91久久精品国产91性色tv| 欧美日本精品一区二区三区| 精品久久久久一区| 欧美激情在线观看视频免费| 国产精品乱码人人做人人爱| 亚洲精品视频一区| 婷婷久久综合九色国产成人| 国产一区二区精品久久99| 91丨九色porny丨蝌蚪| 欧美精品日韩综合在线| 国产情人综合久久777777| 香蕉久久一区二区不卡无毒影院 |