コード例 #1
0
ファイル: lzo.cpp プロジェクト: iamale/palm-heroes
uint32 Decompress(const unsigned char* lzoBuff, uint32 lzoBuffLen, iDynamicBuffer& rawBuff)
{
	uint16 hdr;
	memcpy(&hdr, lzoBuff, sizeof(uint16));
	lzoBuffLen -=  sizeof(uint16);
	lzoBuff += sizeof(uint16);
	if (hdr != LZO_BLOCK_HDR) {
		check(0);
		return 0;
	}

	unsigned long raw_buf_len;
	memcpy(&raw_buf_len, lzoBuff, sizeof(unsigned long));
	lzoBuffLen -=  sizeof(uint32);
	lzoBuff += sizeof(uint32);
	if (raw_buf_len <= 0 || raw_buf_len > LZO_MAX_BUF_LEN) {
		check(0);
		return 0;
	}

	rawBuff.ReInit(raw_buf_len);
	rawBuff.IncSize( raw_buf_len );
    int res = lzo1x_decompress(lzoBuff,lzoBuffLen,(unsigned char*)rawBuff.GetData(),&raw_buf_len,NULL);
	if (res != LZO_E_OK) {
		check(0);
		return 0;
	}
	return raw_buf_len;
}
コード例 #2
0
ファイル: xe.dib.mem.cpp プロジェクト: Reynmar/pocketheroes
bool iMemoryDib::Bit2Byte(const iDynamicBuffer& in_buff, iDynamicBuffer& out_buff)
{
	check(in_buff.GetSize());
	uint32 nsiz = in_buff.GetSize()*8;
	out_buff.ReInit(nsiz);
	for (uint32 xx=0; xx<in_buff.GetSize(); ++xx){
		uint8 data;
		in_buff.Read(data);
		for (uint32 zz=0; zz<8; ++zz){
			uint8 bd = (uint8)(((data >> zz)&1)?255:0);
			out_buff.Write(bd);
		}
	}
	return true;
}
コード例 #3
0
ファイル: xe.dib.mem.cpp プロジェクト: Reynmar/pocketheroes
bool iMemoryDib::Byte2Bit(const iDynamicBuffer& in_buff, iDynamicBuffer& out_buff)
{
	check(in_buff.GetSize());
	uint32 nsiz = in_buff.GetSize()/8 + ((in_buff.GetSize()%8==0)?0:1);
	out_buff.ReInit(nsiz);
	for (uint32 xx=0; xx<nsiz; ++xx){
		uint32 cnt=0;
		uint8 data=0;
		uint8 odata=0;
		while (cnt<8 && in_buff.Read(data)) {
			odata |= (data?1<<cnt:0);
			cnt++;
		}
		out_buff.Write(odata);
	}
	out_buff.Seek(0);
	return true;
}