예제 #1
0
//-------------------------------------------
//--- File probes
//-------------------------------------------
bool rFile::fileExists(void)
{
	//Make sure we have a path and file name
	if((!fileName.nLen && !fileName.pLen) || !fileName.nLen)
		return false;

	else
	{
		//Examine file
		FILE *fPtr;

		//File doesn't exist
		if( fopen_s(&fPtr, getFull(), "r") != 0)
		{
			return false;
		}

		//File exists, close it if it's open
		else
		{
			if(fPtr)
				fclose(fPtr);

			return true;
		}		
	}
}
예제 #2
0
//--- Write data and headers
bool rFileDDS::writeDDS(const void *data)
{
	//File name errors
	if(!fileName.nLen || !fileName.pLen)
		return false;

	//DDS errors
	if(!ddsHead.dwHeight || !ddsHead.dwWidth || !ddsHead.dwPitchOrLinearSize)
		return false;

	else
	{
		FILE *fp;
		ddsHead.ddspf = ddsPX;

		fopen_s(&fp, getFull(), "wb");
		
		//Write headers and data
		fwrite(DDS_Ident, sizeof(DDS_Ident), 1, fp);
		fwrite(&ddsHead, sizeof(DWORD), 31, fp);
		fwrite(data, sizeof(data), sizeof(data) * ddsHead.dwHeight * ddsHead.dwWidth, fp);

		fclose(fp);

		return true;
	}
}
예제 #3
0
//-------------------------------------------
//--- Read and Write
//-------------------------------------------
char* rFile::readAll(void)
{
	//Make sure we have a path and file name
	if((!fileName.nLen && !fileName.pLen) || !fileName.nLen)
		return NULL;

	if(!fileExists())
		return NULL;

	else
	{
		FILE *fp;
		long len;
		char *buf;

		fopen_s(&fp, getFull(), "rb");

		fseek(fp, 0, SEEK_END);	//go to end
		len=ftell(fp);			//get position at end (length)
		fseek(fp, 0, SEEK_SET);	//go to beg.

		buf = new char[len];	//malloc buffer
		fread(buf, len, 1, fp);	//read into buffer

		fclose(fp);

		dataLen = len;
		typeSize = sizeof(buf);

		return buf;
	}
}
예제 #4
0
//Append to current file
bool rFile::writeAppend(const char* data)
{
	if(!fileName.nLen || !fileName.pLen || !dataLen || !typeSize)
		return false;

	else
	{
		FILE *fp;

		fopen_s(&fp, getFull(), "ab+");
		fwrite(data, typeSize, dataLen / typeSize, fp);
		fclose(fp);

		return true;
	}
}
예제 #5
0
SDL_Rect* TextureSheet::getFrame(int index)
{
	return info_ ? &frames_[index] : getFull();
}