コード例 #1
0
bool InMemoryDataStream::Seek(std::size_t offset, SeekType seekType)
{
   switch (seekType)
   {
   case SeekType::Beginning:
      if (offset <= SizeInBytes())
      {
         streamPosition = offset;
         return true;
      }
      break;

   case SeekType::Current:
      if (offset <= BytesRemaining())
      {
         streamPosition += offset;
         return true;
      }
      break;

   case SeekType::End:
      if (offset <= SizeInBytes())
      {
         streamPosition = (data.size() - offset);
         return true;
      }
      break;
   }

   return false;
}
コード例 #2
0
void File::ReadWholeFile(std::vector<char>& bytes)
{
   if (PHYSFS_seek(impl->physfsFileHandle, 0) == 0)
   {
      throw Exception(std::string("Seek failed on file ") + mountedFilePath.path + "\n" + PHYSFS_getLastError());
   }

   int64_t fileSizeInBytes = SizeInBytes();

   if (fileSizeInBytes == -1)
   {
      throw Exception(std::string("File sizing failed on file") + mountedFilePath.path + "\n" + PHYSFS_getLastError());
   }

   std::size_t bytesToRead = static_cast<size_t>(fileSizeInBytes);

   std::size_t maxBytesToRead = std::numeric_limits<std::size_t>::max();

   if (static_cast<uint64_t>(fileSizeInBytes) > maxBytesToRead)
   {
      bytesToRead = maxBytesToRead;
   }

   bytes.resize(bytesToRead);

   int64_t bytesRead = Read(bytes.data(), bytesToRead);

   if (static_cast<uint64_t>(bytesRead) != bytesToRead)
   {
      throw Exception(std::string("Failed to read whole file") + mountedFilePath.path + "\n" + PHYSFS_getLastError());
   }
}
コード例 #3
0
bool File::Seek(std::size_t offset, DataStream::SeekType seekType)
{
   std::size_t seekPosition = 0;

   switch (seekType)
   {
   case SeekType::Beginning:
      seekPosition = offset;
      break;

   case SeekType::Current:
      seekPosition = CurrentPosition() + offset;
      break;

   case SeekType::End:
      {
         std::size_t sizeInBytes = SizeInBytes();

         if (offset > sizeInBytes)
         {
            return false;
         }
            
         seekPosition = (sizeInBytes - offset);
      }
      break;

   default:
      return false;
   }

   return (PHYSFS_seek(impl->physfsFileHandle, seekPosition) != 0);
}
コード例 #4
0
ファイル: xVertexBufferImpl.cpp プロジェクト: BorMor/xEngine
void* xVertexBuffer::Lock()
{
	if (pImpl->mData)
		free(pImpl->mData);
	pImpl->mData = malloc(SizeInBytes());
	//HRESULT hr = pImpl->mBuffer->Map(D3D11_MAP_WRITE_DISCARD, 0, &result);
	return pImpl->mData;
}
コード例 #5
0
void A025DL02_Driver::Clear()
{
    NATIVE_PROFILE_HAL_DRIVERS_DISPLAY();
    memset( LCD_GetFrameBuffer(), 0, SizeInBytes() );

    //reset the cursor pos to the begining
    g_A025DL02_Driver.m_cursor = 0;
}
コード例 #6
0
void HD66773R_Driver::Clear()
{
    NATIVE_PROFILE_HAL_DRIVERS_DISPLAY();


    // have to verified that its memset takes UINT32* or not.
    memset( GetScreenBuffer(), 0, SizeInBytes() );

    //reset the cursor pos to the begining
    g_HD66773R_Driver.m_cursor = 0;
}
コード例 #7
0
void CInputLayoutDesc::AddElement(string name, uint32_t index, DXGI_FORMAT fmt, uint32_t input_slot, bool use_as_instance_data, uint32_t instance_data_step_rate)
{
	CGpuProgInputElem desc;
	desc.Name	= name;
	desc.Index	= index;
	desc.Fmt	= fmt;
	desc.InputSlot			= input_slot;	// could be 0 .. 15, use in case of we are binding more than 1 VB (interleaving VB)
	desc.UseAsInstanceData	= use_as_instance_data;
	desc.InstanceDataStepRate = instance_data_step_rate; // The number of instances to draw before stepping one unit forward
	desc.AlignedBytesOffset = use_as_instance_data ? m_OffsetInBytesToLastElem_Instance : m_OffsetInBytesToLastElem_VertexData; // this have to be set regarding to the Input structure

	// increase the offset
	if(use_as_instance_data)
	{
		m_IADesc_Instance.push_back(desc);	
		m_OffsetInBytesToLastElem_Instance += SizeInBytes(fmt);
	}
	else
	{
		m_IADesc.push_back(desc);
		m_OffsetInBytesToLastElem_VertexData += SizeInBytes(fmt);
	}
}
コード例 #8
0
ファイル: xVertexBufferImpl.cpp プロジェクト: BorMor/xEngine
xVertexBuffer::xVertexBuffer(xSharedPtr<xVertexFormat> vertex_format, size_t vertex_count, size_t stride)
	: mStride(stride), mVertexCount(vertex_count)
{
	pImpl = new Impl;
	pImpl->mData = NULL;
	pImpl->mVertexFormat = vertex_format;

	D3D11_BUFFER_DESC desc;
	desc.Usage = D3D11_USAGE_DEFAULT;
	desc.ByteWidth = SizeInBytes();
	desc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
	desc.CPUAccessFlags = 0;
	desc.MiscFlags = 0;	

	/*D3D11_SUBRESOURCE_DATA initial_data;
	initial_data.pSysMem = data;
	initial_data.SysMemPitch = 0;
	initial_data.SysMemSlicePitch = 0;*/

	gDevice->CreateBuffer(&desc, 0, &pImpl->mBuffer);		
}
コード例 #9
0
std::size_t InMemoryDataStream::BytesRemaining() const
{
   return (SizeInBytes() - streamPosition);
}