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

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

?? cviewplain.cpp

?? 一個(gè)關(guān)于symbian下文本編輯器的源碼程序
?? CPP
字號(hào):
/*
 * HView [c]2004 Marcin Skoczylas, All rights reserved
 *
 * This file is under GPL license, see gpl.txt file
 *
 */

#include "SymDefs.h"
#include "CViewPlain.h"

CViewPlain::CViewPlain(CHVContainer *iContainer)
{
	this->iContainer=iContainer;
}

CViewPlain::~CViewPlain()
{
	delete [] filePosArray;
}

void CViewPlain::SetupArrays(TInt filePos)
{
	int y;
	char *buf;


	iContainer->numCharsY = iContainer->screenRect.Height() / HVFONT_HEIGHT;
	iContainer->numCharsX = iContainer->screenRect.Width() / HVFONT_WIDTH;

	LOGF("preparing char arrays for plain view: iContainer->numCharsX=%d iContainer->numCharsY=%d\n", iContainer->numCharsX, iContainer->numCharsY);

	//LOGF("setuparrays - !filePos?\n");
	// prepare the char arrays knowing the screen and font size
	if (!filePosArray)
		filePosArray = new TInt[iContainer->numCharsY];

	//LOGF("setuparrays - !iContainer->charsArray?\n");
	if (!iContainer->charsArray)
	{
		iContainer->charsArray = new char* [iContainer->numCharsY];
		for (y = 0; y < iContainer->numCharsY; y++)
		{
			iContainer->charsArray[y] = NULL;
		}
	}
	
	for (y = 0; y < iContainer->numCharsY; y++)
	{
		buf = new char[iContainer->numCharsX+1];		//DEBUG!!!
		buf[iContainer->numCharsX-1] = 0x00;

		filePosArray[y] = filePos;

		iContainer->appUi->fileLoader->ReadOneLine(buf, filePos, iContainer->numCharsX);
		//LOGF("line readed: '%s' pos=%d next=%d\n", buf, filePosArray[y], filePos);
		
		//LOGF("iContainer->charsArray[%d]?\n", y);
		if (iContainer->charsArray[y])
		{
			//LOGF("delete\n");
			delete iContainer->charsArray[y];
		}

		iContainer->charsArray[y] = buf;
	}

	afterLastLinePos = filePos;
}

void CViewPlain::DrawWholeBackBuffer()
{
	int i,j;

	for (i = 0; i < iContainer->numCharsY; i++)
	{
		for (j = 0; j < iContainer->numCharsX; j++)
		{
			if (iContainer->charsArray[i][j] == '\n')
				break;

			iContainer->backBufferGc->BitBlt(
				TPoint(j * HVFONT_WIDTH, i * HVFONT_HEIGHT), 
				iContainer->fontBitmap, 
				iContainer->GetFontRectByChar((unsigned int)iContainer->charsArray[i][j]));

		}
	
	}

}

void CViewPlain::ScrollRight()
{
	/* too slow code, have time to write arrays swapping? mee no ;p
	if (filePosArray[0] < (iContainer->appUi->fileLoader->fileSize-1))
	{
		SetupArrays(filePosArray[0]+1);
		iContainer->DrawWholeBackBuffer();
		iContainer->DrawNow();
	}
	*/
}

void CViewPlain::ScrollLeft()
{
	/* r u kiddin' ??
	if (filePosArray[0] > 0)
	{
		SetupArrays(filePosArray[0]-1);
		iContainer->DrawWholeBackBuffer();
		iContainer->DrawNow();
	}
	*/
}


void CViewPlain::ScrollPageDown()
{
	for (int i = 0; i < iContainer->numCharsY; i++)
	{
		ScrollDown(false);
	}
	iContainer->DrawWholeBackBuffer();
	iContainer->DrawNow();	
}

void CViewPlain::ScrollPageUp()
{
	for (int i = 0; i < iContainer->numCharsY; i++)
	{
		ScrollUp(false);
	}
	iContainer->DrawWholeBackBuffer();
	iContainer->DrawNow();
}


void CViewPlain::ScrollDown(bool draw)
{
	int y, x;

	// already at end of file?
	if (afterLastLinePos == iContainer->appUi->fileLoader->fileSize)
	{
		return;
	}

	delete [] iContainer->charsArray[0];

	// scroll arrays
	for (y = 1; y < iContainer->numCharsY; y++)
	{
		filePosArray[y-1] = filePosArray[y];
		iContainer->charsArray[y-1] = iContainer->charsArray[y];
	}

	iContainer->charsArray[iContainer->numCharsY-1] = new char[iContainer->numCharsX+1];		//DEBUG!!!!!!
	iContainer->charsArray[iContainer->numCharsY-1][iContainer->numCharsX-1] = 0x00;
	filePosArray[iContainer->numCharsY-1] = afterLastLinePos;
	iContainer->appUi->fileLoader->ReadOneLine(iContainer->charsArray[iContainer->numCharsY-1], afterLastLinePos, iContainer->numCharsX);
	//LOGF("line readed: '%s' pos=%d next=%d\n", iContainer->charsArray[iContainer->numCharsY-1], filePosArray[iContainer->numCharsY-1], afterLastLinePos);

	if (!draw)
		return;

	// move lines up, starting on second line (bitmap copy from backbuffer)
	TRect src(0, HVFONT_HEIGHT, iContainer->numCharsX * HVFONT_WIDTH, iContainer->numCharsY * HVFONT_HEIGHT);
	iContainer->backBufferGc2->BitBlt(TPoint(0, 0), iContainer->backBuffer, src);

	// clear last line
	iContainer->backBufferGc2->SetPenStyle(CGraphicsContext::ENullPen);
	iContainer->backBufferGc2->SetBrushColor(TRgb(149, 149, 239));
	iContainer->backBufferGc2->SetBrushStyle(CGraphicsContext::ESolidBrush);
	iContainer->backBufferGc2->DrawRect(
		TRect(0, 
			(iContainer->numCharsY-1) * HVFONT_HEIGHT, 
			iContainer->numCharsX * HVFONT_WIDTH, 
			iContainer->numCharsY * HVFONT_HEIGHT));

	// draw last line
	for (x = 0; x < iContainer->numCharsX; x++)
	{
		if (iContainer->charsArray[iContainer->numCharsY-1][x] == '\n')
			break;

		iContainer->backBufferGc2->BitBlt(TPoint(x * HVFONT_WIDTH, (iContainer->numCharsY-1) * HVFONT_HEIGHT), iContainer->fontBitmap, 
			iContainer->GetFontRectByChar((unsigned int)iContainer->charsArray[iContainer->numCharsY-1][x]));

	}

	iContainer->backBufferGc->BitBlt(TPoint(0, 0), iContainer->backBuffer2);
	
	iContainer->DrawNow();
}

void CViewPlain::ScrollUp(bool draw)
{
	int x, y, retCode;
	
	//LOGF("scrollup\n");
	
	// already at beginning of file?
	if (filePosArray[0] == 0)
	{
		LOGF("ScrollUp: on beginning of file\n");
		return;
	}

	delete [] iContainer->charsArray[iContainer->numCharsY-1];

	afterLastLinePos = filePosArray[iContainer->numCharsY-1];

	for (y = (iContainer->numCharsY-2); y > -1; y--)
	{
		filePosArray[y+1] = filePosArray[y];
		iContainer->charsArray[y+1] = iContainer->charsArray[y];
	}

	iContainer->charsArray[0] = new char[iContainer->numCharsX+1];		//DEBUG!!!!!!
	iContainer->charsArray[0][iContainer->numCharsX-1] = 0x00;


	if ((retCode = iContainer->appUi->fileLoader->ReadOneLineBefore(iContainer->charsArray[0], filePosArray[0], iContainer->numCharsX)) < 0)
	{
		LOGF("RE-READ full line from pos %d\n", filePosArray[0]);

		char *buf;
		int i, y, x, filePos;

		filePos = filePosArray[0];

		if (retCode == ERetMyk)
		{
			for (y = 0; y < iContainer->numCharsY; y++)
			{
				if (iContainer->charsArray[y])
					delete [] iContainer->charsArray[y];

				buf = new char[iContainer->numCharsX+1];		//DEBUG!!!
				buf[iContainer->numCharsX-1] = 0x00;

				filePosArray[y] = filePos;

				iContainer->appUi->fileLoader->ReadOneLine(buf, filePos, iContainer->numCharsX);
				//LOGF("line readed: '%s' pos=%d next=%d\n", buf, filePosArray[y], filePos);
				
				iContainer->charsArray[y] = buf;

				for (x = 0; x < iContainer->numCharsX; x++)
				{
					if (buf[x] == '\n')
					{
						if (!draw)
							return;

						// move down only needed lines
						// move lines down, starting on next needed line (bitmap copy from backbuffer)
						TRect src(0, 
							y * HVFONT_HEIGHT, 
							iContainer->numCharsX * HVFONT_WIDTH, 
							(iContainer->numCharsY-1) * HVFONT_HEIGHT);

						iContainer->backBufferGc2->BitBlt(TPoint(0, HVFONT_HEIGHT*(y+1)), iContainer->backBuffer, src);

						// clear first lines
						iContainer->backBufferGc2->SetPenStyle(CGraphicsContext::ENullPen);
						iContainer->backBufferGc2->SetBrushColor(TRgb(149, 149, 239));
						iContainer->backBufferGc2->SetBrushStyle(CGraphicsContext::ESolidBrush);
						iContainer->backBufferGc2->DrawRect(TRect(0, 0, iContainer->numCharsX * HVFONT_WIDTH, HVFONT_HEIGHT*(y+1)));

						// draw first lines
						for (i = 0; i < (y+1); i++)
						{
							for (x = 0; x < iContainer->numCharsX; x++)
							{
								if (iContainer->charsArray[i][x] == '\n')
									break;

								iContainer->backBufferGc2->BitBlt(TPoint(x * HVFONT_WIDTH, i * HVFONT_HEIGHT), iContainer->fontBitmap, 
									iContainer->GetFontRectByChar((unsigned int)iContainer->charsArray[i][x]));

							}
						
						}
						iContainer->backBufferGc->BitBlt(TPoint(0, 0), iContainer->backBuffer2);
						iContainer->DrawNow();
						return;
					}

				}
			}
			afterLastLinePos = filePos;
			DrawWholeBackBuffer();
			iContainer->DrawNow();
			return;
		
		}
		else
		{
			/*
			// olej ten wnik, do nothing, screen is already updated
			*/
			SetupArrays(0);
			return;
		}
		DrawWholeBackBuffer();
		iContainer->DrawNow();
		return;
	}
	//LOGF("up line readed: '%s' pos=%d next=%d\n", iContainer->charsArray[0], filePosArray[0], afterLastLinePos);

	if (!draw)
		return;
	
	// move lines down, starting on previous before last line (bitmap copy from backbuffer)
	TRect src(0, 0, iContainer->numCharsX * HVFONT_WIDTH, (iContainer->numCharsY-1) * HVFONT_HEIGHT);
	iContainer->backBufferGc2->BitBlt(TPoint(0, HVFONT_HEIGHT), iContainer->backBuffer, src);

	// clear first line
	iContainer->backBufferGc2->SetPenStyle(CGraphicsContext::ENullPen);
	iContainer->backBufferGc2->SetBrushColor(TRgb(149, 149, 239));
	iContainer->backBufferGc2->SetBrushStyle(CGraphicsContext::ESolidBrush);
	iContainer->backBufferGc2->DrawRect(TRect(0, 0, iContainer->numCharsX * HVFONT_WIDTH, HVFONT_HEIGHT));

	// draw first line
	for (x = 0; x < iContainer->numCharsX; x++)
	{
		if (iContainer->charsArray[0][x] == '\n')
			break;

		iContainer->backBufferGc2->BitBlt(TPoint(x * HVFONT_WIDTH, 0), iContainer->fontBitmap, 
			iContainer->GetFontRectByChar((unsigned int)iContainer->charsArray[0][x]));

	}

	iContainer->backBufferGc->BitBlt(TPoint(0, 0), iContainer->backBuffer2);
	iContainer->DrawNow();
	return;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品是欧美日韩精品| 国产中文一区二区三区| 91浏览器入口在线观看| 亚洲图片另类小说| 色噜噜偷拍精品综合在线| 亚洲天堂福利av| 在线免费观看日本欧美| 婷婷夜色潮精品综合在线| 日韩欧美成人午夜| 国产91在线看| 亚洲少妇30p| 欧美电影在线免费观看| 国产呦萝稀缺另类资源| 最新成人av在线| 91.com视频| 国产99久久久精品| 亚洲国产精品嫩草影院| 精品粉嫩aⅴ一区二区三区四区| 高清久久久久久| 亚洲小少妇裸体bbw| 亚洲精品一区二区三区蜜桃下载| 成人性色生活片免费看爆迷你毛片| 1区2区3区欧美| 欧美一级国产精品| 99久久精品国产麻豆演员表| 视频一区二区三区在线| 国产区在线观看成人精品| 色999日韩国产欧美一区二区| 日本欧美一区二区三区乱码| 国产亚洲欧美日韩俺去了| 在线观看亚洲一区| 国产一区二区中文字幕| 亚洲韩国一区二区三区| 国产日韩欧美精品电影三级在线| 在线观看区一区二| 国产精品系列在线播放| 性欧美疯狂xxxxbbbb| 日本一区二区高清| 91精品国产aⅴ一区二区| jizzjizzjizz欧美| 韩国v欧美v日本v亚洲v| 天堂在线亚洲视频| 国产精品久久久久久久久图文区 | 91日韩精品一区| 美女一区二区久久| 亚洲自拍偷拍网站| 国产精品色呦呦| 欧美成人激情免费网| 欧美三级资源在线| 91蜜桃视频在线| 国产麻豆成人精品| 美女www一区二区| 亚洲电影欧美电影有声小说| 中文字幕一区二区日韩精品绯色| 欧美成人福利视频| 6080午夜不卡| 欧美视频在线一区二区三区 | 国产成人在线看| 蜜桃精品视频在线观看| 亚洲午夜精品在线| 一区二区三区在线影院| 国产精品久久久久久亚洲毛片| 久久综合中文字幕| 日韩免费电影一区| 91精品国产色综合久久久蜜香臀| 在线视频欧美精品| 在线观看一区二区视频| 一本一道综合狠狠老| av成人免费在线观看| 99视频精品全部免费在线| 成人精品视频一区二区三区尤物| 国产福利91精品一区二区三区| 韩国成人精品a∨在线观看| 久久99久久99小草精品免视看| 日本不卡的三区四区五区| 天天综合天天综合色| 午夜精品久久久久久不卡8050| 亚洲综合在线免费观看| 亚洲成人黄色小说| 午夜欧美2019年伦理| 日本在线观看不卡视频| 日韩国产欧美在线播放| 全部av―极品视觉盛宴亚洲| 日韩av二区在线播放| 青青草原综合久久大伊人精品| 日韩二区三区在线观看| 九一九一国产精品| 国产不卡一区视频| 97久久超碰国产精品电影| 日本精品一区二区三区高清| 欧美午夜精品一区二区蜜桃| 欧美卡1卡2卡| 欧美mv和日韩mv的网站| 中文在线一区二区| 亚洲韩国精品一区| 久久99精品国产.久久久久久| 国产一区二区精品久久91| 国产成人综合在线| 一本到不卡免费一区二区| 欧美美女视频在线观看| 精品欧美乱码久久久久久| 亚洲国产成人私人影院tom| 亚洲综合色区另类av| 秋霞av亚洲一区二区三| 国产99久久久国产精品免费看| 91丝袜高跟美女视频| 欧美狂野另类xxxxoooo| 久久网站最新地址| 亚洲卡通动漫在线| 久久精品国产久精国产| 成人av在线影院| 欧美美女激情18p| 久久久久久久久久久久电影 | 99国产精品国产精品久久| 欧美日韩国产综合视频在线观看| 日韩精品在线一区| 一区二区三区中文免费| 黄色日韩三级电影| 欧美在线你懂的| 久久综合色8888| 亚洲国产视频a| 成人午夜电影久久影院| 欧美一区二区三区视频| 中文字幕亚洲成人| 麻豆精品视频在线| 欧洲另类一二三四区| 久久丝袜美腿综合| 日韩在线一二三区| 99精品视频在线播放观看| 日韩午夜精品视频| 亚洲成人免费观看| 99视频一区二区三区| 久久美女艺术照精彩视频福利播放| 亚洲高清不卡在线观看| 99久久精品免费| 久久精品亚洲精品国产欧美kt∨ | 亚洲精品乱码久久久久久| 精久久久久久久久久久| 在线免费不卡电影| 国产精品久久久久久户外露出| 久久97超碰国产精品超碰| 欧美日韩国产乱码电影| 亚洲乱码国产乱码精品精小说| 国产精一区二区三区| 日韩午夜小视频| 日韩福利电影在线| 欧美日韩aaaaa| 亚洲一区av在线| 色一区在线观看| 国产精品久久久久久久第一福利| 国产精品一区在线观看你懂的| 欧美人与z0zoxxxx视频| 亚洲综合色在线| 日本久久一区二区三区| 亚洲精品视频在线看| 不卡视频免费播放| 国产三级三级三级精品8ⅰ区| 久久成人免费日本黄色| 日韩欧美三级在线| 开心九九激情九九欧美日韩精美视频电影 | 欧美日韩和欧美的一区二区| 亚洲卡通欧美制服中文| 色嗨嗨av一区二区三区| 亚洲女同ⅹxx女同tv| 99精品视频在线免费观看| 国产精品第五页| 色婷婷亚洲精品| 亚洲综合在线视频| 69久久夜色精品国产69蝌蚪网| 五月激情综合色| 欧美一区二区二区| 精品在线亚洲视频| 国产欧美久久久精品影院| 国产精品一区二区久久精品爱涩| 久久久99精品久久| fc2成人免费人成在线观看播放 | 石原莉奈在线亚洲三区| 制服.丝袜.亚洲.中文.综合| 日韩精品视频网| 欧美白人最猛性xxxxx69交| 精品在线免费视频| 欧美国产1区2区| 欧日韩精品视频| 天天操天天干天天综合网| 91精品国产福利| 国产成人精品免费一区二区| 中文字幕一区二区三| 欧美日韩美少妇| 九九九久久久精品| 最新国产の精品合集bt伙计| 欧美日韩中文字幕精品| 精品一区二区在线免费观看| 日本一区二区电影| 欧美日韩视频在线第一区 | 久久精品亚洲国产奇米99 | 在线观看91视频| 日韩精品一二三区| 国产欧美日韩亚州综合| 色婷婷综合久色| 麻豆国产精品777777在线|