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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? textlayout.java

?? 源碼為Eclipse開(kāi)源開(kāi)發(fā)平臺(tái)桌面開(kāi)發(fā)工具SWT的源代碼,
?? JAVA
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
 *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li> * </ul> */public void setFont (Font font) {	checkLayout();	if (font != null && font.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT);	if (this.font == font) return;	if (font != null && font.equals(this.font)) return;	freeRuns();	this.font = font;}/** * Sets the orientation of the receiver, which must be one * of <code>SWT.LEFT_TO_RIGHT</code> or <code>SWT.RIGHT_TO_LEFT</code>. * <p> * * @param orientation new orientation style *  * @exception SWTException <ul> *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li> * </ul> */public void setOrientation (int orientation) {	checkLayout();	int mask = SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT;	orientation &= mask;	if (orientation == 0) return;	if ((orientation & SWT.LEFT_TO_RIGHT) != 0) orientation = SWT.LEFT_TO_RIGHT;	if (this.orientation == orientation) return;	this.orientation = orientation;	freeRuns();}/** * Sets the offsets of the receiver's text segments. Text segments are used to * override the default behaviour of the bidirectional algorithm. * Bidirectional reordering can happen within a text segment but not  * between two adjacent segments. * Each text segment is determined by two consecutive offsets in the  * <code>segments</code> arrays. The first element of the array should  * always be zero and the last one should always be equals to length of * the text. * <p> *  * @param segments the text segments offset *  * @exception SWTException <ul> *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li> * </ul> */public void setSegments(int[] segments) {	checkLayout();	if (this.segments == null && segments == null) return;	if (this.segments != null && segments !=null) {		if (this.segments.length == segments.length) {			int i;			for (i = 0; i <segments.length; i++) {				if (this.segments[i] != segments[i]) break;			}			if (i == segments.length) return;		}	}	freeRuns();	this.segments = segments;}/** * Sets the line spacing of the receiver.  The line spacing * is the space left between lines. * * @param spacing the new line spacing  * * @exception IllegalArgumentException <ul> *    <li>ERROR_INVALID_ARGUMENT - if the spacing is negative</li> * </ul> * @exception SWTException <ul> *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li> * </ul> */public void setSpacing (int spacing) {	checkLayout();	if (spacing < 0) SWT.error(SWT.ERROR_INVALID_ARGUMENT);	if (this.lineSpacing == spacing) return;	freeRuns();	this.lineSpacing = spacing;}/** * Sets the style of the receiver for the specified range.  Styles previously * set for that range will be overwritten.  The start and end offsets are * inclusive and will be clamped if out of range. *  * @param style the style * @param start the start offset * @param end the end offset *  * @exception SWTException <ul> *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li> * </ul> */public void setStyle (TextStyle style, int start, int end) {	checkLayout();	int length = text.length();	if (length == 0) return;	if (start > end) return;	start = Math.min(Math.max(0, start), length - 1);	end = Math.min(Math.max(0, end), length - 1);	int low = -1;	int high = styles.length;	while (high - low > 1) {		int index = (high + low) / 2;		if (start <= styles[index].start) {			high = index;		} else {			low = index;		}	}	if (0 <= high && high < styles.length) {		StyleItem item = styles[high];		if (item.start == start && styles[high + 1].start - 1 == end) {			if (style == null) {				if (item.style == null) return;			} else {				if (style.equals(item.style)) return;			}		}	}	freeRuns();	int count = 0, i;	StyleItem[] newStyles = new StyleItem[styles.length + 2];	for (i = 0; i < styles.length; i++) {		StyleItem item = styles[i];		if (item.start >= start) break;		newStyles[count++] = item;	}	StyleItem newItem = new StyleItem();	newItem.start = start;	newItem.style = style;	newStyles[count++] = newItem;	if (styles[i].start > end) {		newItem = new StyleItem();		newItem.start = end + 1;		newItem.style = styles[i -1].style;		newStyles[count++] = newItem;	} else {		for (; i<styles.length; i++) {			StyleItem item = styles[i];			if (item.start > end) break;		}		if (end != styles[i].start - 1) {			i--;			styles[i].start = end + 1;		}	}	for (; i<styles.length; i++) {		StyleItem item = styles[i];		if (item.start > end) newStyles[count++] = item;	}	if (newStyles.length != count) {		styles = new StyleItem[count];		System.arraycopy(newStyles, 0, styles, 0, count);	} else {		styles = newStyles;	}}/** * Sets the receiver's tab list. Each value in the tab list specifies * the space in pixels from the origin of the text layout to the respective * tab stop.  The last tab stop width is repeated continuously. *  * @param tabs the new tab list *  * @exception SWTException <ul> *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li> * </ul> */public void setTabs (int[] tabs) {	checkLayout();	if (this.tabs == null && tabs == null) return;	if (this.tabs != null && tabs !=null) {		if (this.tabs.length == tabs.length) {			int i;			for (i = 0; i <tabs.length; i++) {				if (this.tabs[i] != tabs[i]) break;			}			if (i == tabs.length) return;		}	}	freeRuns();	this.tabs = tabs;} /** * Sets the receiver's text. * * @param text the new text * * @exception IllegalArgumentException <ul> *    <li>ERROR_NULL_ARGUMENT - if the text is null</li> * </ul> * @exception SWTException <ul> *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li> * </ul> */public void setText (String text) {	checkLayout();	if (text == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);	if (text.equals(this.text)) return;	freeRuns();	this.text = text;	styles = new StyleItem[2];	styles[0] = new StyleItem();	styles[1] = new StyleItem();		styles[1].start = text.length();}/** * Sets the line width of the receiver, which determines how * text should be wrapped and aligned. The default value is * <code>-1</code> which means wrapping is disabled. * * @param width the new width  * * @exception IllegalArgumentException <ul> *    <li>ERROR_INVALID_ARGUMENT - if the width is <code>0</code> or less than <code>-1</code></li> * </ul> * @exception SWTException <ul> *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li> * </ul> *  * @see #setAlignment(int) */public void setWidth (int width) {	checkLayout();	if (width < -1 || width == 0) SWT.error(SWT.ERROR_INVALID_ARGUMENT);	if (this.wrapWidth == width) return;	freeRuns();	this.wrapWidth = width;}boolean shape (int hdc, StyleItem run, char[] chars, int[] glyphCount, int maxGlyphs) {	int hr = OS.ScriptShape(hdc, run.psc, chars, chars.length, maxGlyphs, run.analysis, run.glyphs, run.clusters, run.visAttrs, glyphCount);	run.glyphCount = glyphCount[0];	if (hr != OS.USP_E_SCRIPT_NOT_IN_FONT) {		SCRIPT_FONTPROPERTIES fp = new SCRIPT_FONTPROPERTIES ();		fp.cBytes = SCRIPT_FONTPROPERTIES.sizeof;		OS.ScriptGetFontProperties(hdc, run.psc, fp);		short[] glyphs = new short[glyphCount[0]];		OS.MoveMemory(glyphs, run.glyphs, glyphs.length * 2);		int i;		for (i = 0; i < glyphs.length; i++) {			if (glyphs[i] == fp.wgDefault) break;		}		if (i == glyphs.length) return true;	}	if (run.psc != 0) {		OS.ScriptFreeCache(run.psc);		glyphCount[0] = 0;		OS.MoveMemory(run.psc, glyphCount, 4);	}	run.glyphCount = 0;	return false;}/*  * Generate glyphs for one Run. */void shape (final int hdc, final StyleItem run) {	final int[] buffer = new int[1];	final char[] chars = new char[run.length];	segmentsText.getChars(run.start, run.start + run.length, chars, 0);	final int maxGlyphs = (chars.length * 3 / 2) + 16;	final int hHeap = OS.GetProcessHeap();	run.glyphs = OS.HeapAlloc(hHeap, OS.HEAP_ZERO_MEMORY, maxGlyphs * 2);	run.clusters = OS.HeapAlloc(hHeap, OS.HEAP_ZERO_MEMORY, maxGlyphs * 2);	run.visAttrs = OS.HeapAlloc(hHeap, OS.HEAP_ZERO_MEMORY, maxGlyphs * SCRIPT_VISATTR_SIZEOF);	run.psc = OS.HeapAlloc(hHeap, OS.HEAP_ZERO_MEMORY, 4);	if (!shape(hdc, run, chars, buffer,  maxGlyphs)) {		final int script = run.analysis.eScript;		final int hFont = OS.GetCurrentObject(hdc, OS.OBJ_FONT);		final LOGFONT logFont = OS.IsUnicode ? (LOGFONT)new LOGFONTW () : new LOGFONTA ();		OS.GetObject(hFont, LOGFONT.sizeof, logFont);		LOGFONT cachedLogFont = device.logFontsCache != null ? device.logFontsCache[script] : null;		if (cachedLogFont != null) {			cachedLogFont.lfHeight = logFont.lfHeight;			cachedLogFont.lfWeight = logFont.lfWeight;			cachedLogFont.lfItalic = logFont.lfItalic;			cachedLogFont.lfWidth = logFont.lfWidth;			int newFont = OS.CreateFontIndirect(cachedLogFont);			OS.SelectObject(hdc, newFont);			OS.ScriptShape(hdc, run.psc, chars, chars.length, maxGlyphs, run.analysis, run.glyphs, run.clusters, run.visAttrs, buffer);			run.glyphCount = buffer[0];			run.fallbackFont = newFont;		} else {			final LOGFONT newLogFont = OS.IsUnicode ? (LOGFONT)new LOGFONTW () : new LOGFONTA ();			if (device.logFontsCache == null) device.logFontsCache = new LOGFONT[device.scripts.length];			SCRIPT_PROPERTIES properties = new SCRIPT_PROPERTIES();			OS.MoveMemory(properties, device.scripts[script], SCRIPT_PROPERTIES.sizeof);			int charSet = properties.fAmbiguousCharSet ? OS.DEFAULT_CHARSET : properties.bCharSet;			Object object = new Object () {				public int EnumFontFamExProc(int lpelfe, int lpntme, int FontType, int lParam) {					OS.MoveMemory(newLogFont, lpelfe, LOGFONT.sizeof);					if (FontType == OS.RASTER_FONTTYPE) return 1;					newLogFont.lfHeight = logFont.lfHeight;					newLogFont.lfWeight = logFont.lfWeight;					newLogFont.lfItalic = logFont.lfItalic;					newLogFont.lfWidth = logFont.lfWidth;					int newFont = OS.CreateFontIndirect(newLogFont);					OS.SelectObject(hdc, newFont);					if (shape(hdc, run, chars, buffer, maxGlyphs)) {						run.fallbackFont = newFont;						LOGFONT cacheLogFont = OS.IsUnicode ? (LOGFONT)new LOGFONTW () : new LOGFONTA ();						OS.MoveMemory(cacheLogFont, lpelfe, LOGFONT.sizeof);						device.logFontsCache[script] = cacheLogFont;						return 0;					}					OS.SelectObject(hdc, hFont);					OS.DeleteObject(newFont);					return 1;				}			};			Callback callback = new Callback(object, "EnumFontFamExProc", 4); //$NON-NLS-1$			int address = callback.getAddress();			if (address == 0) SWT.error(SWT.ERROR_NO_MORE_CALLBACKS);			newLogFont.lfCharSet = (byte)charSet;			OS.EnumFontFamiliesEx(hdc, newLogFont, address, 0, 0);			callback.dispose();			if (run.fallbackFont == 0) {				OS.ScriptShape(hdc, run.psc, chars, chars.length, maxGlyphs, run.analysis, run.glyphs, run.clusters, run.visAttrs, buffer);				device.logFontsCache[script] = logFont;				run.glyphCount = buffer[0];			}				}	}	int[] abc = new int[3];	run.advances = OS.HeapAlloc(hHeap, OS.HEAP_ZERO_MEMORY, run.glyphCount * 4);	run.goffsets = OS.HeapAlloc(hHeap, OS.HEAP_ZERO_MEMORY, run.glyphCount * GOFFSET_SIZEOF);	OS.ScriptPlace(hdc, run.psc, run.glyphs, run.glyphCount, run.visAttrs, run.analysis, run.advances, run.goffsets, abc);	run.width = abc[0] + abc[1] + abc[2];	TEXTMETRIC lptm = OS.IsUnicode ? (TEXTMETRIC)new TEXTMETRICW() : new TEXTMETRICA();	OS.GetTextMetrics(hdc, lptm);	run.ascent = lptm.tmAscent;	run.descent = lptm.tmDescent;}int validadeOffset(int offset, int step) {	offset += step;	if (segments != null && segments.length > 2) {		for (int i = 0; i < segments.length; i++) {			if (translateOffset(segments[i]) - 1 == offset) {				offset += step;				break;			}		}	}		return offset;}int translateOffset(int offset) {	if (segments == null) return offset;	int nSegments = segments.length;	if (nSegments <= 1) return offset;	int length = text.length();	if (length == 0) return offset;	if (nSegments == 2) {		if (segments[0] == 0 && segments[1] == length) return offset;	}	for (int i = 0; i < nSegments && offset - i >= segments[i]; i++) {		offset++;	}		return offset;}int untranslateOffset(int offset) {	if (segments == null) return offset;	int nSegments = segments.length;	if (nSegments <= 1) return offset;	int length = text.length();	if (length == 0) return offset;	if (nSegments == 2) {		if (segments[0] == 0 && segments[1] == length) return offset;	}	for (int i = 0; i < nSegments && offset > segments[i]; i++) {		offset--;	}	return offset;}}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品欧美综合在线| 美女高潮久久久| 亚洲欧洲av色图| 国产精品久久久久久久浪潮网站| 欧美激情一区二区| 国产精品色一区二区三区| 国产欧美一区视频| √…a在线天堂一区| 亚洲欧美另类在线| 亚洲国产成人av网| 婷婷开心激情综合| 久久av老司机精品网站导航| 精品在线免费观看| 国产成人免费视频网站| av高清久久久| 欧美系列一区二区| 在线观看91精品国产麻豆| 欧美一区二区三区免费大片 | 成人免费视频视频在线观看免费| 粉嫩av一区二区三区在线播放| 成人免费视频一区二区| 色88888久久久久久影院野外| 欧美视频中文一区二区三区在线观看| 在线不卡欧美精品一区二区三区| 欧美日韩成人一区二区| 日韩一区二区三区视频| 精品免费国产二区三区| 国产精品久久久久aaaa| 亚洲国产日产av| 久久狠狠亚洲综合| 成人一道本在线| 色老汉av一区二区三区| 欧美一卡二卡三卡| 日本一区二区三区高清不卡| 亚洲精品国产a| 美国欧美日韩国产在线播放| www.在线成人| 欧美人体做爰大胆视频| 欧美tk丨vk视频| 国产精品久久久久精k8| 日本aⅴ免费视频一区二区三区| 国产91清纯白嫩初高中在线观看| 91免费观看视频在线| 日韩一二三区视频| 国产精品色呦呦| 日韩精品电影一区亚洲| 国产成人鲁色资源国产91色综 | 国产亚洲一区二区三区| 一区二区三区美女| 精品无码三级在线观看视频| 91亚洲精华国产精华精华液| 欧美一区二区国产| 亚洲另类春色国产| 激情综合色综合久久| 在线精品视频一区二区三四| 久久久久久久久久久99999| 亚洲一区二区影院| 国产经典欧美精品| 欧美久久久久久久久中文字幕| 国产精品五月天| 蜜桃av一区二区| 91福利资源站| 国产精品久久久久影视| 久久国产日韩欧美精品| 91精品办公室少妇高潮对白| 久久久久国产一区二区三区四区| 亚洲成人动漫av| 91免费看`日韩一区二区| xf在线a精品一区二区视频网站| 亚洲综合一区二区三区| 不卡av在线网| 久久久亚洲精品石原莉奈| 日韩成人精品在线| 欧美午夜片在线看| 亚洲欧美视频在线观看| 国产·精品毛片| 精品国产一区二区三区久久影院| 午夜激情综合网| 欧美亚男人的天堂| 国产精品家庭影院| 国产精品一区2区| 精品少妇一区二区三区在线视频| 亚洲国产精品一区二区久久恐怖片 | 欧美videos中文字幕| 亚洲一区二区三区不卡国产欧美| 波多野结衣中文字幕一区二区三区| 日韩久久久久久| 青娱乐精品视频在线| 欧美日本国产一区| 亚洲国产一区二区三区| 色综合久久中文字幕综合网 | 处破女av一区二区| 欧美激情综合五月色丁香| 韩日精品视频一区| 欧美成人女星排名| 毛片基地黄久久久久久天堂| 欧美一区二区三区四区视频| 午夜精品福利久久久| 欧美美女黄视频| 调教+趴+乳夹+国产+精品| 欧美精品xxxxbbbb| 丝袜亚洲另类丝袜在线| 欧美精品日韩一本| 婷婷久久综合九色综合伊人色| 欧美剧在线免费观看网站| 日韩电影在线观看网站| 欧美一区永久视频免费观看| 日本午夜精品一区二区三区电影 | 国产午夜精品久久久久久久| 国产乱码精品一区二区三区五月婷| 久久蜜桃一区二区| 国产成人免费视频网站| 国产精品久久网站| 日本精品视频一区二区| 亚洲一二三四区不卡| 91精品免费在线观看| 精品在线播放免费| 国产欧美日韩中文久久| 福利一区二区在线| 亚洲人一二三区| 欧美性大战久久久久久久| 日本美女一区二区三区视频| 精品人伦一区二区色婷婷| 粉嫩av一区二区三区在线播放| 亚洲欧美中日韩| 欧美色区777第一页| 日本一道高清亚洲日美韩| 久久综合色一综合色88| av亚洲产国偷v产偷v自拍| 亚洲国产成人av好男人在线观看| 日韩精品一区二区三区四区视频| 国产风韵犹存在线视精品| 中文一区一区三区高中清不卡| 色狠狠一区二区| 麻豆精品蜜桃视频网站| 中文字幕巨乱亚洲| 欧美午夜一区二区三区| 国产真实乱子伦精品视频| 国产精品久久一卡二卡| 欧美日韩在线播放| 国产精品一区二区视频| 亚洲一线二线三线久久久| 日韩欧美精品在线| av在线综合网| 日本aⅴ精品一区二区三区| 国产精品久久久久久久蜜臀 | 亚洲电影视频在线| xnxx国产精品| 欧美综合天天夜夜久久| 国产酒店精品激情| 一区二区三区视频在线观看| 日韩欧美一区二区不卡| 91免费观看在线| 黄色小说综合网站| 亚洲一二三四久久| 久久夜色精品国产欧美乱极品| 色狠狠色噜噜噜综合网| 精品写真视频在线观看| 亚洲综合色在线| 国产精品免费视频一区| 欧美一区二区三区视频在线观看| 成人午夜av电影| 久久精品99国产精品日本| 亚洲伦理在线免费看| 久久这里都是精品| 欧美日韩电影在线| a4yy欧美一区二区三区| 久久er99热精品一区二区| 亚洲亚洲精品在线观看| 国产嫩草影院久久久久| 欧美一区二区视频网站| 99精品在线观看视频| 久久精品国产久精国产| 亚洲图片欧美一区| 最近日韩中文字幕| 久久久电影一区二区三区| 欧美日韩国产首页| 99精品黄色片免费大全| 国产一区二区免费在线| 天堂精品中文字幕在线| 亚洲综合在线电影| 国产欧美一区二区精品婷婷| 日韩一区二区电影| 在线观看日韩毛片| 91在线国产福利| 国产91精品入口| 国产伦精品一区二区三区视频青涩 | 97se亚洲国产综合自在线不卡| 国产一区二区三区国产| 日本中文一区二区三区| 亚洲国产成人tv| 一区二区三区在线免费| 136国产福利精品导航| 国产欧美日韩精品一区| 久久精品网站免费观看| 欧美大片日本大片免费观看| 91精品欧美一区二区三区综合在 | 91视频精品在这里| 成人晚上爱看视频| 成人av免费在线|