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

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

?? colorstring.cpp

?? 檢測語法的Edit類
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

long CColorString::GetLineCount() 
{
	long retval = 0;
	ThreadLock();
	retval = m_lineOffset.GetSize();
	ThreadUnlock();
	return retval;
}

long CColorString::GetLineOffset(long index) 
{
	long retval = 0;
	ThreadLock();
	if (index >= m_lineOffset.GetSize()) return GetLength();
	if (index < 0) return 0;
	retval = m_lineOffset[index];
	ThreadUnlock();
	return retval;
}

BOOL CColorString::ParseComments(CColorArray& color)
{
	long			len = GetLength();
	long			pos, size, start;
	BOOL			bComment;

	len = GetLength();
	pos = CommentPos();

	while (pos < len) {
		bComment = FALSE;
		for (int i = 0; i < m_comment.GetSize(); i++) {
			if ((start = GetComment(m_comment[i]->Begin(), m_comment[i]->End(), size, pos)) >= pos) {
				
				// We've found a comment
				color.SetColor(m_comment[i]->Color(), start, size);

				ThreadLock();
				if (pos != CommentPos() || len != GetLength()) {
					ThreadUnlock();
					return FALSE;
				}
				
				pos = CommentPos(start+size-1);
				ThreadUnlock();
			}
		}

		if (!bComment) {
			ThreadLock();
			pos = CommentPos(CommentPos()+1);
			ThreadUnlock();
		}
	}

	return TRUE;
}

BOOL CColorString::ParseKeywords(CColorArray& color)
{
	CString			token;
	long			beginToken;
	CKeywordInfo*	pKeyword = NULL;
	long			len = GetLength();
	long			pos;

	pos = KeywordPos();

	while (pos < len) {
		beginToken = GetToken(token, pos, TRUE);
		long tokenLen = token.GetLength();
		if (tokenLen > 0) {
			if ((pKeyword = KeywordLookup(token)) != NULL) {
				color.SetColor(pKeyword->Color(), beginToken, tokenLen);
			} 
		} 

		ThreadLock();
		if (pos != KeywordPos() || len != GetLength()) {
			ThreadUnlock();
			return FALSE;
		}
		pos = KeywordPos((tokenLen > 0 ? beginToken + tokenLen : pos + 1));
		ThreadUnlock();
	}

	return TRUE;
}

BOOL CColorString::ParseQuotes(CColorArray& color)
{
	long			len = GetLength();
	long			pos, size, start;
	BOOL			bQuote;

	len = GetLength();
	pos = QuotePos();

	while (pos < len) {
		bQuote = FALSE;
		for (int i = 0; i < m_quote.GetSize(); i++) {
			if ((start = GetQuote(m_quote[i]->Begin(), m_quote[i]->End(), size, pos)) >= pos) {
				
				// We've found a comment
				color.SetColor(m_quote[i]->Color(), start, size);

				ThreadLock();
				if (pos != QuotePos() || len != GetLength()) {
					ThreadUnlock();
					return FALSE;
				}
				
				pos = QuotePos(start+size-1);
				ThreadUnlock();
			}
		}

		if (!bQuote) {
			ThreadLock();
			pos = QuotePos(QuotePos()+1);
			ThreadUnlock();
		}
	}

	return TRUE;
}


void CColorString::DoUpdate(BOOL bDataChangedFlag)
{
	for (int i = 0; i < m_update.GetSize(); i++) {
		m_update[i]->DoColorStringUpdate(bDataChangedFlag);
	}
}

void CColorString::Process(long pos /*= 0*/)
{
	long			len = GetLength();

	ThreadLock();
	if (m_color.GetSize() != len) {
		//TRACE("m_color(%d) != len(%d)\r\n", m_color.GetSize(), len);
		m_color.SetSize(len);
	}
	if (m_renderColor.GetSize() != len) m_renderColor.SetSize(len);
	ThreadUnlock();

	Reset(pos);

	if (m_bkgThread == NULL) {
		m_bkgThread = AfxBeginThread(CColorStringBkgThread, this, THREAD_PRIORITY_LOWEST);
	}
}

CString CColorString::GetLine(long index)
{
	CString retval = _T("");

	if (index >= 0 && index < GetLineCount()) {
		long begin = GetLineOffset(index);
		long size;
		if (index+1 < GetLineCount()) {
			size = GetLineOffset(index+1)-begin-1;
		} else {
			size = GetLength()-begin;
		}
		ThreadLock();
		retval = Mid(begin, size); 
		ThreadUnlock();
	}

	return retval;
}

CColorString& CColorString::operator=(const CString& rhs)
{
	BeginUpdate();
	ThreadLock();
	*((CString*) this) = rhs;
	long len = GetLength();
	m_color.SetSize(len);
	ThreadUnlock();
	EndUpdate(0, len);
	return *this;
}

CColorString& CColorString::operator=(const CStringEx& rhs)
{
	BeginUpdate();
	ThreadLock();
	*((CStringEx*) this) = rhs;
	long len = GetLength();
	m_color.SetSize(len);
	ThreadUnlock();
	EndUpdate(0, len);
	return *this;
}

CColorString& CColorString::operator=(TCHAR ch)
{
	BeginUpdate();
	ThreadLock();
	*((CString*) this) = ch;
	long len = GetLength();
	m_color.SetSize(len);
	ThreadUnlock();
	EndUpdate(0, len);
	return *this;
}

CColorString& CColorString::operator=(LPCSTR lpsz)
{
	BeginUpdate();
	ThreadLock();
	*((CString*) this) = lpsz;
	long len = GetLength();
	m_color.SetSize(len);
	ThreadUnlock();
	EndUpdate(0, len);
	return *this;
}

CColorString& CColorString::operator=(LPCWSTR lpsz)
{
	BeginUpdate();
	ThreadLock();
	*((CString*) this) = lpsz;
	long len = GetLength();
	m_color.SetSize(len);
	ThreadUnlock();
	EndUpdate(0, len);
	return *this;
}

CColorString& CColorString::operator=(const unsigned char* psz)
{
	BeginUpdate();
	ThreadLock();
	*((CString*) this) = psz;
	long len = GetLength();
	m_color.SetSize(len);
	ThreadUnlock();
	EndUpdate(0, len);
	return *this;
}

// string concatenation
CColorString& CColorString::operator+=(const CString& string)
{
	ThreadLock();
	long pos = GetLength();
	ThreadUnlock();

	BeginUpdate();

	ThreadLock();
	*((CString*) this) += string;
	long len = GetLength();
	m_color.SetSize(len);
	ThreadUnlock();

	EndUpdate(pos, len-pos);
	return *this;
}

CColorString& CColorString::operator+=(TCHAR ch)
{
	BeginUpdate();
	ThreadLock();
	long pos = GetLength();
	*((CString*) this) += ch;
	long len = GetLength();
	m_color.SetSize(len);
	ThreadUnlock();

	EndUpdate(pos, len);
	return *this;
}

CColorString& CColorString::operator+=(LPCTSTR lpsz)
{
	BeginUpdate();

	ThreadLock();
	long pos = GetLength();
	*((CString*) this) += lpsz;
	long len = GetLength();
	m_color.SetSize(len);
	ThreadUnlock();

	EndUpdate(pos, len-pos);
	return *this;
}

CColorString& CColorString::Insert(int pos, LPCTSTR s)
{
	BeginUpdate();
	ThreadLock();
	CStringEx::Insert(pos, s);
	m_color.InsertAt(pos, m_defaultColor, strlen(s));
	long len = GetLength();
	ThreadUnlock();
	EndUpdate(pos, len-pos);
	return *this;
}

CColorString& CColorString::Insert(int pos, TCHAR c)
{
	BeginUpdate();
	ThreadLock();
	CStringEx::Insert(pos, c);
	m_color.InsertAt(pos, m_defaultColor);
	long len = GetLength();
	ThreadUnlock();
	EndUpdate(pos, len-pos);
	return *this;
}

CColorString& CColorString::Delete(int pos, int len)
{
	BeginUpdate();
	ThreadLock();
	CStringEx::Delete(pos, len);
	m_color.RemoveAt(pos, len);
	long tLen = GetLength();
	ThreadUnlock();
	EndUpdate(pos, tLen-pos);
	return *this;
}

CColorString& CColorString::Replace(int pos, int len, LPCTSTR s)
{
	BeginUpdate();
	ThreadLock();
	CStringEx::Replace(pos, len, s);
	ThreadUnlock();
	EndUpdate(pos, len);
	return *this;
}

void CColorString::SetAt(int nIndex, TCHAR ch)
{
	BeginUpdate();

	ThreadLock();
	CString::SetAt(nIndex, ch);
	m_color.SetAt(nIndex, m_defaultColor);
	ThreadUnlock();
	EndUpdate(nIndex, 1);
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美影视一区在线| 免费日本视频一区| 在线中文字幕不卡| 亚洲一区二区三区中文字幕| 一本大道久久a久久精二百 | 中文字幕精品在线不卡| 国产福利电影一区二区三区| 久久久久国色av免费看影院| 国产高清成人在线| 国产精品视频第一区| aaa欧美色吧激情视频| 亚洲男帅同性gay1069| 欧美日韩一区三区四区| 另类小说图片综合网| 国产亚洲一区二区三区四区| voyeur盗摄精品| 亚洲一区二区三区免费视频| 制服丝袜亚洲色图| 国产精华液一区二区三区| 亚洲另类春色校园小说| 5566中文字幕一区二区电影| 韩国女主播一区二区三区| 国产精品卡一卡二| 宅男噜噜噜66一区二区66| 精品一区二区在线看| 国产精品久久一级| 欧美三级午夜理伦三级中视频| 日本欧美肥老太交大片| 欧美激情一区二区| 777精品伊人久久久久大香线蕉| 国产一区二区女| 亚洲国产精品影院| 久久婷婷色综合| 欧洲精品视频在线观看| 国产一区二区免费视频| 伊人婷婷欧美激情| www久久精品| 在线一区二区三区四区五区| 激情综合色综合久久综合| 亚洲美女区一区| 久久女同精品一区二区| 欧美色手机在线观看| 韩国女主播一区| 天堂成人国产精品一区| 国产精品久久久久婷婷| 欧美tk丨vk视频| 欧美性一级生活| 国产一区二区三区不卡在线观看| 一个色综合av| 国产精品久久久爽爽爽麻豆色哟哟| 9191久久久久久久久久久| 97久久人人超碰| 韩国v欧美v日本v亚洲v| 亚洲高清视频的网址| 自拍av一区二区三区| 久久久精品国产免费观看同学| 欧美绝品在线观看成人午夜影视| 99热这里都是精品| 国产成+人+日韩+欧美+亚洲| 日本不卡不码高清免费观看| 亚洲国产视频直播| 亚洲人123区| 中文文精品字幕一区二区| 欧美成va人片在线观看| 这里只有精品视频在线观看| 欧洲一区二区av| 日本高清不卡aⅴ免费网站| av在线播放不卡| 国产又黄又大久久| 另类小说图片综合网| 蜜臀久久99精品久久久久宅男 | 91麻豆精品国产| 91福利视频久久久久| 99久精品国产| 91浏览器打开| 色综合久久66| 在线免费一区三区| 欧美自拍丝袜亚洲| 欧美性xxxxx极品少妇| 欧美在线视频日韩| 欧美午夜一区二区三区| 欧美无砖砖区免费| 欧美日韩亚州综合| 3atv在线一区二区三区| 日韩一级大片在线| 精品国产免费人成电影在线观看四季 | www成人在线观看| 久久亚洲精精品中文字幕早川悠里| 欧美成人猛片aaaaaaa| 精品入口麻豆88视频| 精品国产麻豆免费人成网站| 2020国产精品自拍| 中文字幕不卡在线| 亚洲欧美日韩人成在线播放| 亚洲综合久久久| 午夜精品国产更新| 久久99精品国产91久久来源| 国产一区二区三区四区在线观看| 国产精品99久久不卡二区| 成人一区二区三区| 在线精品亚洲一区二区不卡| 制服.丝袜.亚洲.中文.综合| 日韩精品资源二区在线| 国产亚洲综合av| 亚洲天天做日日做天天谢日日欢| 亚洲资源中文字幕| 在线观看网站黄不卡| 欧美性猛片aaaaaaa做受| 91精品福利在线一区二区三区| 26uuu亚洲综合色欧美| 国产精品久久久久久久久免费樱桃 | 美女被吸乳得到大胸91| 国产大片一区二区| 欧美性一区二区| 久久久亚洲午夜电影| 亚洲少妇最新在线视频| 免费在线看成人av| 成人va在线观看| 3d成人动漫网站| 国产精品视频第一区| 日本在线不卡视频| 成人av电影在线网| 欧美电影免费观看高清完整版在线观看| 国产欧美一区视频| 天天综合天天综合色| 国产麻豆精品theporn| 欧美在线小视频| 国产欧美一二三区| 视频一区二区国产| 91麻豆.com| 久久久久久久电影| 性做久久久久久久免费看| 国产精品一级片在线观看| 欧美体内she精视频| 国产人成亚洲第一网站在线播放| 亚洲va韩国va欧美va精品| 国产91精品精华液一区二区三区| 欧美区视频在线观看| 中文字幕中文在线不卡住| 黄页网站大全一区二区| 欧美日韩一区 二区 三区 久久精品| 久久久久国产精品人| 免费观看日韩电影| 欧美亚洲国产一卡| 国产精品国产三级国产有无不卡| 久久99国内精品| 在线播放中文字幕一区| 一区二区三区精品久久久| 国产成人a级片| 精品理论电影在线| 日韩精品久久理论片| 欧美主播一区二区三区| 亚洲精品一二三四区| 成人av在线影院| 国产欧美视频一区二区三区| 国产曰批免费观看久久久| 欧美一区二区三区啪啪| 亚洲国产成人va在线观看天堂| 色偷偷久久一区二区三区| 成人免费在线播放视频| 成人激情小说网站| 中文字幕第一区二区| 粉嫩av一区二区三区| 久久久久久久久久看片| 狠狠色丁香久久婷婷综| 精品粉嫩aⅴ一区二区三区四区 | 狠狠狠色丁香婷婷综合久久五月| 91麻豆精品国产91久久久久| 亚洲第一在线综合网站| 欧美三级日韩三级| 午夜激情久久久| 欧美精品高清视频| 日韩av高清在线观看| 91.麻豆视频| 麻豆一区二区在线| 精品国产免费一区二区三区四区| 久久狠狠亚洲综合| 久久久一区二区| 大胆亚洲人体视频| 亚洲日本va午夜在线影院| 一本色道亚洲精品aⅴ| 亚洲另类在线视频| 69p69国产精品| 中文字幕高清不卡| 欧美激情一区在线| 国产亲近乱来精品视频 | 欧美自拍偷拍一区| 国产91精品欧美| 91无套直看片红桃| 国产精品色在线| 91色|porny| 丝袜美腿亚洲色图| 精品国产乱码久久久久久1区2区 | 2022国产精品视频| 成人在线一区二区三区| 亚洲精品菠萝久久久久久久| 欧美午夜视频网站| 六月婷婷色综合| 国产精品夫妻自拍| 欧美日韩和欧美的一区二区|