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; }
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()); } }
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); }
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; }
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; }
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; }
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); } }
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); }
std::size_t InMemoryDataStream::BytesRemaining() const { return (SizeInBytes() - streamPosition); }