//-------------------------------------------------------------------------- void VeWindows::_SetWindowTitle(Window* pkWindow) { WindowData* pkData = (WindowData*)(VeRefObject*)pkWindow->m_spDriverData; VeUInt32 u32Len = MultiByteToWideChar(CP_UTF8, 0, pkWindow->m_kTitle, -1, NULL, 0); VeChar16* wszGBK = VeAlloc(VeChar16, u32Len + 1); VeZeroMemory(wszGBK, sizeof(VeChar16) * (u32Len + 1)); MultiByteToWideChar(CP_UTF8, 0, pkWindow->m_kTitle, -1, wszGBK, u32Len); u32Len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL); VeChar8* szGBK = VeAlloc(VeChar8, u32Len + 1); VeZeroMemory(szGBK, sizeof(VeChar8) * (u32Len + 1)); WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, szGBK, u32Len, NULL, NULL); SetWindowText(pkData->m_hWnd, szGBK); VeFree(wszGBK); VeFree(szGBK); }
//-------------------------------------------------------------------------- VeParallel::~VeParallel() noexcept { m_bLoop = false; for (VeSizeT i(0); i < m_stThreadNum; ++i) { m_pkLoopEventArray[i].Set(); m_pkThreadArray[i].join(); m_pkThreadArray[i].~thread(); m_pkLoopEventArray[i].~Event(); } VeFree(m_pkThreadArray); m_pkThreadArray = nullptr; VeFree(m_pkLoopEventArray); m_pkLoopEventArray = nullptr; m_stThreadNum = 0; }
//-------------------------------------------------------------------------- void VeBinaryOStream::Transfer(VeBinaryIStream& kFrom, VeInt32 i32Length) { VE_ASSERT(i32Length > 0); void* pvBuffer = VeMalloc(i32Length); VE_ASSERT_EQ(kFrom.Read(pvBuffer, i32Length), i32Length); AddBlob(pvBuffer, i32Length); VeFree(pvBuffer); }
//-------------------------------------------------------------------------- VeMemWriter::~VeMemWriter() noexcept { if (m_pvBuffer) { VeFree(m_pvBuffer); m_pvBuffer = nullptr; m_stSize = 0; } }
//-------------------------------------------------------------------------- void VeStringA_S::UpdateGBKToValueData() { if(m_kGBKData.Length()) { VeUInt32 u32Len = MultiByteToWideChar(CP_ACP, 0, m_kGBKData, -1, NULL, 0); VeChar16* wszGBK = VeAlloc(VeChar16, u32Len + 1); VeZeroMemory(wszGBK, sizeof(VeChar16) * (u32Len + 1)); MultiByteToWideChar(CP_ACP, 0, m_kGBKData, -1, wszGBK, u32Len); u32Len = WideCharToMultiByte(CP_UTF8, 0, wszGBK, -1, NULL, 0, NULL, NULL); VeChar8* szUTF8 = VeAlloc(VeChar8, u32Len + 1); VeZeroMemory(szUTF8, sizeof(VeChar8) * (u32Len + 1)); WideCharToMultiByte(CP_UTF8, 0, wszGBK, -1, szUTF8, u32Len, NULL, NULL); m_kValue = szUTF8; VeFree(wszGBK); VeFree(szUTF8); } else { m_kValue = ""; } }
//-------------------------------------------------------------------------- VeFileOStream::~VeFileOStream() noexcept { if (m_pkFile) { WriteBackCache(); fclose(m_pkFile); m_pkFile = nullptr; } if (m_pbyCache) { VeFree(m_pbyCache); m_pbyCache = nullptr; } }
//-------------------------------------------------------------------------- void VeFileIStream::Finish() noexcept { m_stPointer = m_stFileSize; if (m_pkFile) { fclose(m_pkFile); m_pkFile = nullptr; } if (m_pbyCache) { VeFree(m_pbyCache); m_pbyCache = nullptr; } }
//-------------------------------------------------------------------------- D3D12InputLayout::~D3D12InputLayout() noexcept { VeFree((void*)m_kDesc.pInputElementDescs); m_kDesc.pInputElementDescs = nullptr; m_kDesc.NumElements = 0; }
int ve_alloc_free(void * pbuf) { VeFree(pbuf); return 0; }
int ve_alloc_free(void * pbuf) { return VeFree(pbuf); }
//-------------------------------------------------------------------------- void WindowsWindow::Init(WindowsVideo& kVideo, const char* pcTitle, int32_t x, int32_t y, int32_t w, int32_t h, uint32_t u32Flags) { Term(); LPWSTR lpwstrTitle = WindowsVideo::UTF8ToWSTR(pcTitle); DWORD dwStyle = FlagsToWindowStyle(u32Flags); int32_t flag_x = x >> 28; int32_t flag_y = y >> 28; x = flag_x ? 0 : x; y = flag_y ? 0 : y; RECT windowRect = { x, y, w, h }; AdjustWindowRect(&windowRect, dwStyle, FALSE); VE_ASSERT(w > 0 && w < UINT16_MAX && h > 0 && h < UINT16_MAX); m_u16Width = (uint16_t)w; m_u16Height = (uint16_t)h; w = windowRect.right - windowRect.left; h = windowRect.bottom - windowRect.top; switch (flag_x) { case 1: x = CW_USEDEFAULT; break; case 2: x = (GetSystemMetrics(SM_CXSCREEN) - w) >> 1; break; default: x = windowRect.left; break; } switch (flag_y) { case 1: y = CW_USEDEFAULT; break; case 2: y = (GetSystemMetrics(SM_CYSCREEN) - h) >> 1; break; default: y = windowRect.top; break; } x = x == CW_USEDEFAULT ? x : vtd::max(x, 0); y = y == CW_USEDEFAULT ? y : vtd::max(y, 0); m_hHandle = CreateWindowW(kVideo.m_wstrClassName, lpwstrTitle, dwStyle, x, y, w, h, nullptr, nullptr, kVideo.m_hInstance, this); VeFree(lpwstrTitle); if (!m_hHandle) { m_u16Width = 0; m_u16Height = 0; THROW("Couldn't create window"); } if (VE_MASK_HAS_ALL(u32Flags, VE_WINDOW_SHOWN)) { int32_t i32Show = SW_SHOW; if (VE_MASK_HAS_ALL(dwStyle, WS_THICKFRAME)) { switch (u32Flags & 0xF) { case VE_WINDOW_MINIMIZED: i32Show = SW_SHOWMINIMIZED; break; case VE_WINDOW_MAXIMIZED: i32Show = SW_SHOWMAXIMIZED; break; case VE_WINDOW_DEPSTARTUP: i32Show = kVideo.m_i32CmdShow; break; default: break; } } ShowWindow(m_hHandle, i32Show); } m_u32Flags = u32Flags & (VE_WINDOW_ALLOW_HIGHDPI | VE_WINDOW_FOREIGN); UpdateFlags(); kVideo.m_kWindowList.attach_back(m_kNode); }