示例#1
0
文件: script.cpp 项目: Tellus/colobot
bool CScript::WriteStack(FILE *file)
{
    int     nb;

    nb = 2;
    fWrite(&nb, sizeof(int), 1, file);
    fWrite(&m_ipf, sizeof(int), 1, file);
    fWrite(&m_errMode, sizeof(int), 1, file);

    return m_botProg->SaveState(file);
}
示例#2
0
CString CHSCalculate::CreateHtml(const CString& strContent, const InfoIndex* pInfoIndex)
{
	if (pInfoIndex == NULL)
	{
		return "";
	}

	// 读格式文件
	CString strPath = CGeneralHelper::GetAppPath() + _T("face\\html\\") + HTMLFORMAT_PATH;
	CFile  fRead(strPath, CFile::modeRead); 
    long flen = (long)fRead.GetLength(); 
	if (flen <= 0)
	{
		return "";
	}
	char*  pBuffer = new char[flen]; 
	fRead.Read(pBuffer,flen); 
	CString strFotmat(pBuffer, flen);
	delete[] pBuffer;
	fRead.Close();

	//////////////////////////////////////////////////////////////////////////
	// 形成html文件
	// 标题
	strFotmat.Replace(HTML_REPLACE_TITLE, pInfoIndex->m_cTitle);
	// 正文
	// 将换行符替换成<\br>
	CString strFormatContent(strContent, strContent.GetLength());
	strFormatContent.Replace("\r\n", "</br>&nbsp&nbsp");
	strFotmat.Replace(HTML_REPLACE_CONTENT, strContent);
	// 时间
	CString strTime;
	strTime.Format("%04d-%02d-%02d ", pInfoIndex->m_lDate/10000, (pInfoIndex->m_lDate%10000)/100, pInfoIndex->m_lDate%100);
	strTime.AppendFormat("%02d:%02d:%02d", pInfoIndex->m_lTime/10000, (pInfoIndex->m_lTime%10000)/100, pInfoIndex->m_lTime%100);
	strFotmat.Replace(HTML_REPLACE_TIME, strTime);
	// 作者
	CString strAuthor = "";
	strFotmat.Replace(HTML_REPLACE_AUTHOR, strAuthor);
	// 来源
	CString strOrigin = "";
	strFotmat.Replace(HTML_REPLACE_ORIGIN, strOrigin);
	//////////////////////////////////////////////////////////////////////////

	// 写html文件
	strPath = CGeneralHelper::GetAppPath() + _T("face\\html\\") + HTMLCONTENT_PATH;
	CFile fWrite(strPath, CFile::modeCreate | CFile::modeWrite);
	fWrite.Write(strFotmat.GetBuffer(), strFotmat.GetLength());
	fWrite.Close();

	return strPath;
}
示例#3
0
void CDIP_ProgrammingMyClass::MyClass_EnhancementLogTransformation(void)
{

	m_pcLogMap=new UCHAR[256];
	

	for(int i=0;i<256;i++)
	{
		m_pcLogMap[i]=255*(log10(i+1)/log10(256));
	}

	for(int i=0;i<m_uiHeight;i++)
	{
		for(int j=0;j<m_uiWidth;j++)	
		{
			m_ppcModifiedImage[i][j]   =m_pcLogMap[m_ppcLoadedImage[i][j]];
		}
	}

	m_pcSaveImage=new UCHAR[m_uiHeight*m_uiWidth];

	for(int i=0;i<m_uiHeight;i++)
	{
		for(int j=0;j<m_uiWidth;j++)
		{
			m_pcSaveImage[i*m_uiWidth+j]=m_ppcModifiedImage[i][j];
		}

	}



	ofstream fWrite("../LOGTRANSFORMATION.raw", ios::out | ios::binary);


	fWrite.write((const char*) m_pcSaveImage, m_uiHeight*m_uiWidth);

	fWrite.close();

	m_bLogTransform=FALSE;

	delete []m_pcLogMap;
	delete []m_pcSaveImage;
}
示例#4
0
文件: main.c 项目: DaftTech/Osmium
int irq(int irq, void* data) {
	uint8_t scancode;
	uint8_t keycode = 0;
	int break_code = 0;

	// Status-Variablen fuer das Behandeln von e0- und e1-Scancodes
	static int     e0_code = 0;
	// Wird auf 1 gesetzt, sobald e1 gelesen wurde, und auf 2, sobald das erste
	// Datenbyte gelesen wurde
	static int      e1_code = 0;
	static uint16_t  e1_prev = 0;

	scancode = inb(0x60);

	// Um einen Breakcode handelt es sich, wenn das oberste Bit gesetzt ist und
	// es kein e0 oder e1 fuer einen Extended-scancode ist
	if ((scancode & 0x80) &&
		(e1_code || (scancode != 0xE1)) &&
		(e0_code || (scancode != 0xE0)))
	{
		break_code = 1;
		scancode &= ~0x80;
	}

	if (e0_code) {
		// Fake shift abfangen und ignorieren
		if ((scancode == 0x2A) || (scancode == 0x36)) {
			e0_code = 0;
			kprintf("E0 ret\n");
			return 0;
		}

		keycode = translate_scancode(1, scancode);
		e0_code = 0;
	} else if (e1_code == 2) {
		// Fertiger e1-Scancode
		// Zweiten Scancode in hoeherwertiges Byte packen
		e1_prev |= ((uint16_t) scancode << 8);
		keycode = translate_scancode(2, e1_prev);
		e1_code = 0;
	} else if (e1_code == 1) {
		// Erstes Byte fuer e1-Scancode
		e1_prev = scancode;
		e1_code++;
	} else if (scancode == 0xE0) {
		// Anfang eines e0-Codes
		e0_code = 1;
	} else if (scancode == 0xE1) {
		// Anfang eines e1-Codes
		e1_code = 1;
	} else {
		// Normaler Scancode
		keycode = translate_scancode(0, scancode);
	}

	if(keycode != 0) {
		while(rpc_check_future(irqFuture)); //Check future before issuing write, cause we reuse same dd page

		dd->data[0] = keycode;
		dd->data[1] = break_code;
		dd->data[2] = 0;
		dd->length = 2;

		irqFuture = fWrite("/dev/kbdRaw", dd);

		kprintf(" >%x:%x< ", keycode, break_code);
		return 1;
	}

	return 0;
}
示例#5
0
void CDIP_ProgrammingMyClass::MyClass_EnhancementGaussianFilter(void)
{

	UCHAR** ppTemp;

	//MyClass_Padding(m_ppcLoadedImage);

	DOUBLE** dGaussianMask;
	dGaussianMask=(DOUBLE**)malloc(sizeof(DOUBLE*)*m_uiGaussianFilterMaskSize);

	if(dGaussianMask == 0)
	{
		return ;
	}

	*dGaussianMask=(DOUBLE*)malloc(sizeof(DOUBLE)*m_uiGaussianFilterMaskSize*m_uiGaussianFilterMaskSize);

	if((*dGaussianMask) == 0)
	{
		free(dGaussianMask);
		return ;
	}

	for(UINT32 i=1;i<m_uiGaussianFilterMaskSize;i++)
	{
		dGaussianMask[i]=dGaussianMask[i-1]+m_uiGaussianFilterMaskSize;
	}

	double count=0;
	for(int i=0;i<m_uiGaussianFilterMaskSize;i++)
	{
		for(int j=0;j<m_uiGaussianFilterMaskSize;j++)
		{
			int tmp=((i-(m_uiGaussianFilterMaskSize/2))*(i-(m_uiGaussianFilterMaskSize/2))+(j-(m_uiGaussianFilterMaskSize/2))*(j-(m_uiGaussianFilterMaskSize/2)))*-1;
			dGaussianMask[i][j]=pow(exp(1.0),tmp/4);
			count+=dGaussianMask[i][j];
		}
	}

	double offset=1/count;

	count=0;
	for(int i=0;i<m_uiGaussianFilterMaskSize;i++)
	{
		for(int j=0;j<m_uiGaussianFilterMaskSize;j++)
		{
			dGaussianMask[i][j]*=offset;
			count+=dGaussianMask[i][j];
		}
	}
	
	m_ppcPaddedImage=MyClass_MemoryAlloc2D(m_uiHeight+m_uiGaussianFilterMaskSize-1, m_uiWidth+m_uiGaussianFilterMaskSize-1);

	if(m_ppcModifiedImage==NULL)
		ppTemp=m_ppcLoadedImage;
	else
		ppTemp=m_ppcModifiedImage;
	
	MyClass_Padding(m_ppcLoadedImage);



	m_ppcWindow=MyClass_MemoryAlloc2D(m_uiGaussianFilterMaskSize, m_uiGaussianFilterMaskSize);
	
	double sum=0;
	for(int i=0;i<m_uiHeight;i++)
	{
		for(int j=0;j<m_uiWidth;j++)
		{
			MyClass_Window(i, j);
			for(int k=0;k<m_uiGaussianFilterMaskSize*m_uiGaussianFilterMaskSize;k++)
			{
				sum+=m_ppcWindow[0][k]*dGaussianMask[0][k];
			}
			ppTemp[i][j]=sum;
			sum=0;
		}
	}


	m_pcSaveImage=new UCHAR[m_uiHeight*m_uiWidth];

	for(int i=0;i<m_uiHeight;i++)
	{
		for(int j=0;j<m_uiWidth;j++)
		{
			m_pcSaveImage[i*m_uiWidth+j]=m_ppcModifiedImage[i][j];
		}

	}

	char filename[100]="../GaussianFilter_";
	char cMasksize[3]="";
	itoa(m_uiGaussianFilterMaskSize, cMasksize, 10);
	strcat(filename, cMasksize);
	strcat(filename, ".raw");

	ofstream fWrite(filename, ios::out | ios::binary);

	fWrite.write((const char*) m_pcSaveImage, m_uiHeight*m_uiWidth);

	fWrite.close();
	

}
示例#6
0
void CDIP_ProgrammingMyClass::MyClass_EnhancementMedianFilter(void)
{
	UCHAR** ppTemp;

	UCHAR** ppMedianMask;

	int masksize=m_uiMedianFilterMaskSize*m_uiMedianFilterMaskSize;

	ppMedianMask=MyClass_MemoryAlloc2D(m_uiMedianFilterMaskSize, m_uiMedianFilterMaskSize);

	m_ppcPaddedImage=MyClass_MemoryAlloc2D(m_uiHeight+m_uiMedianFilterMaskSize-1, m_uiWidth+m_uiMedianFilterMaskSize-1);

	ppTemp=m_ppcModifiedImage;

	MyClass_Padding(m_ppcLoadedImage);

	m_ppcWindow=MyClass_MemoryAlloc2D(m_uiMedianFilterMaskSize, m_uiMedianFilterMaskSize);

	UCHAR *ucSorted=new UCHAR[masksize];


	for(int i=0;i<m_uiHeight;i++)
	{
		for(int j=0;j<m_uiWidth;j++)
		{
			MyClass_Window(i, j);
			for(int k=0;k<masksize;k++)
			{
				ucSorted[k]=m_ppcWindow[0][k];
			}
			sort(ucSorted, ucSorted+masksize);
			
			ppTemp[i][j]=ucSorted[(masksize)>>1];
			
		}
	}


	m_pcSaveImage=new UCHAR[m_uiHeight*m_uiWidth];

	for(int i=0;i<m_uiHeight;i++)
	{
		for(int j=0;j<m_uiWidth;j++)
		{
			m_pcSaveImage[i*m_uiWidth+j]=m_ppcModifiedImage[i][j];
		}

	}

	char filename[100]="../MedianFilter_";
	char cMasksize[3]="";
	itoa(m_uiMedianFilterMaskSize, cMasksize, 10);
	strcat(filename, cMasksize);
	strcat(filename, ".raw");

	ofstream fWrite(filename, ios::out | ios::binary);



	fWrite.write((const char*) m_pcSaveImage, m_uiHeight*m_uiWidth);

	fWrite.close();

	delete []m_pcSaveImage;

}