Ejemplo n.º 1
0
//--------------------------------------------------------------------------
VeFixedString ToStr(const TCHAR* pcStr) noexcept
{
	VeChar8* pcBuffer = nullptr;
	VeInt32 i32Size;
#	ifdef _UNICODE
	i32Size = WideCharToMultiByte(CP_UTF8, 0, pcStr, -1, 0, 0, 0, FALSE);
	if (i32Size > 0)
	{
		pcBuffer = VeStackAlloc(VeChar8, i32Size + 1);
		WideCharToMultiByte(CP_UTF8, 0, pcStr,
			-1, pcBuffer, i32Size, 0, FALSE);
	}
#	else
	i32Size = (VeInt32)VeStrlen(pcStr);
	if (i32Size > 0)
	{
		pcBuffer = VeStackAlloc(VeChar8, i32Size + 1);
		VeStrcpy(pcBuffer, i32Size + 1, pcStr);
	}
#	endif
	VeFixedString kRes;
	if (pcBuffer)
	{
		kRes = pcBuffer;
		VeStackFree(pcBuffer);
		pcBuffer = nullptr;
	}
	return kRes;
}
Ejemplo n.º 2
0
//--------------------------------------------------------------------------
VeFixedString ToStrReplaceIegality(const TCHAR* pcStr) noexcept
{
	VeChar8* pcBuffer = nullptr;
	VeInt32 i32Size;
#	ifdef _UNICODE
	i32Size = WideCharToMultiByte(CP_UTF8, 0, pcStr, -1, 0, 0, 0, FALSE);
	if (i32Size > 0)
	{
		pcBuffer = VeStackAlloc(VeChar8, i32Size + 1);
		WideCharToMultiByte(CP_UTF8, 0, pcStr,
			-1, pcBuffer, i32Size, 0, FALSE);
	}
#	else
	i32Size = (VeInt32)VeStrlen(pcStr);
	if (i32Size > 0)
	{
		pcBuffer = VeStackAlloc(VeChar8, i32Size + 1);
		VeStrcpy(pcBuffer, i32Size + 1, pcStr);
	}
#	endif
	VeFixedString kRes;
	if (pcBuffer)
	{
		{
			VeChar8* pcTemp = pcBuffer;
			while (*pcTemp)
			{
				VeChar8 c = *pcTemp;
				if (c == ' ' || c == '/' || c == '\\' || c == ':' || c == '#' || c == '.')
				{
					*pcTemp = '_';
				}
				++pcTemp;
			}
		}
		kRes = pcBuffer;
		VeStackFree(pcBuffer);
		pcBuffer = nullptr;
	}
	return kRes;
}
Ejemplo n.º 3
0
//--------------------------------------------------------------------------
void VeBinaryIStream::GetStringAligned4(VeFixedString& kStr) noexcept
{
	VeSizeT	stLength = ReadPackedInt();
	if (stLength)
	{
		VeChar8* pcBuffer = VeStackAlloc(VeChar8, stLength + 1);
		VE_ASSERT_EQ(Read(pcBuffer, stLength), stLength);
		pcBuffer[stLength] = 0;
		kStr = pcBuffer;
		VeStackFree(pcBuffer);
	}
	else
	{
		kStr = "";
	}
	VeSizeT stTemp = (stLength >= 255) ? 4 : 1;
	stTemp += stLength;
	stTemp = ((stTemp + 3) & (~3)) - stTemp;
	if (stTemp)
	{
		Skip(stTemp);
	}
}
Ejemplo n.º 4
0
//--------------------------------------------------------------------------
bool WindowsVideoDevice::_CreateWindowFrom(VeWindow::Data* pkWindow,
	const void* pvData) noexcept
{
	VE_ASSERT(pkWindow && pvData);
	HWND hWnd = (HWND)pvData;
	VeInt32 i32TitleLen = GetWindowTextLengthA(hWnd);
	if (i32TitleLen > 0)
	{
		VeChar8* pcTitle = VeStackAlloc(VeChar8, i32TitleLen + 1);
		VE_ASSERT(pcTitle);
		i32TitleLen = GetWindowTextA(hWnd, pcTitle, i32TitleLen);
		VE_ASSERT(i32TitleLen > 0);
		pkWindow->m_kTitle = pcTitle;
		VeStackFree(pcTitle);
	}

	if (!SetupWindowData(pkWindow, hWnd, VE_FALSE))
	{
		return false;
	}

	return true;
}
Ejemplo n.º 5
0
//--------------------------------------------------------------------------
bool WindowsMouse::_CreateCursor(VeCursor::Data* pkCur,
                                 const VeSurfacePtr& spSurface,
                                 VeInt32 i32HotX, VeInt32 i32HotY) noexcept
{
    VE_ASSERT(spSurface && pkCur);
    const VeSizeT pad = (sizeof(VeSizeT) * 8);
    HICON hicon;
    HDC hdc;
    BITMAPV4HEADER bmh;
    LPVOID pixels;
    LPVOID maskbits;
    size_t maskbitslen;
    ICONINFO ii;

    VeInt32 w = spSurface->GetWidth();
    VeInt32 h = spSurface->GetHeight();

    VeZeroMemory(&bmh, sizeof(bmh));
    bmh.bV4Size = sizeof(bmh);
    bmh.bV4Width = w;
    bmh.bV4Height = -h;
    bmh.bV4Planes = 1;
    bmh.bV4BitCount = 32;
    bmh.bV4V4Compression = BI_BITFIELDS;
    bmh.bV4AlphaMask = 0xFF000000;
    bmh.bV4RedMask = 0x00FF0000;
    bmh.bV4GreenMask = 0x0000FF00;
    bmh.bV4BlueMask = 0x000000FF;

    maskbitslen = ((w + (pad - (w % pad))) / 8) * h;
    maskbits = VeStackAlloc(VeUInt8, maskbitslen);

    VeMemorySet(maskbits, 0xFF, maskbitslen);

    hdc = GetDC(nullptr);
    VeZeroMemory(&ii, sizeof(ii));
    ii.fIcon = FALSE;
    ii.xHotspot = (DWORD)i32HotX;
    ii.yHotspot = (DWORD)i32HotY;
    ii.hbmColor = CreateDIBSection(hdc, (BITMAPINFO*)&bmh, DIB_RGB_COLORS, &pixels, nullptr, 0);
    ii.hbmMask = CreateBitmap(w, h, 1, 1, maskbits);
    ReleaseDC(nullptr, hdc);
    VeStackFree(maskbits);

    VE_ASSERT(spSurface->GetFormat()->m_u32Format == VE_PIXELFORMAT_ARGB8888);
    VE_ASSERT(spSurface->GetPitch() == w * 4);
    VeMemoryCopy(pixels, spSurface->GetBuffer(), h * spSurface->GetPitch());

    hicon = CreateIconIndirect(&ii);

    DeleteObject(ii.hbmColor);
    DeleteObject(ii.hbmMask);

    pkCur->m_pvDriverdata = hicon;

    if (!hicon)
    {
        return false;
    }

    return true;
}