Beispiel #1
0
bool CDirectWriteSystem::Initialize()
{
	if (m_hD2DLib == nullptr) {
		m_hD2DLib = Util::LoadSystemLibrary(TEXT("d2d1.dll"));
		if (m_hD2DLib == nullptr)
			return false;
	}

	if (m_hDWriteLib == nullptr) {
		m_hDWriteLib = Util::LoadSystemLibrary(TEXT("dwrite.dll"));
		if (m_hDWriteLib == nullptr)
			return false;
	}

	if (m_pD2DFactory == nullptr) {
		typedef HRESULT (WINAPI *D2D1CreateFactoryFunc)(
			D2D1_FACTORY_TYPE factoryType,
			REFIID riid,
			const D2D1_FACTORY_OPTIONS *pFactoryOptions,
			void **ppIFactory);
		D2D1CreateFactoryFunc pD2D1CreateFactory =
			reinterpret_cast<D2D1CreateFactoryFunc>(::GetProcAddress(m_hD2DLib, "D2D1CreateFactory"));
		if (pD2D1CreateFactory == nullptr)
			return false;
		HRESULT hr = pD2D1CreateFactory(
			D2D1_FACTORY_TYPE_SINGLE_THREADED,
			__uuidof(ID2D1Factory),
			nullptr,
			reinterpret_cast<void**>(&m_pD2DFactory));
		if (FAILED(hr))
			return false;
	}

	if (m_pDWriteFactory == nullptr) {
		auto pDWriteCreateFactory =
			GET_LIBRARY_FUNCTION(m_hDWriteLib, DWriteCreateFactory);
		if (pDWriteCreateFactory == nullptr)
			return false;
		HRESULT hr = pDWriteCreateFactory(
			DWRITE_FACTORY_TYPE_SHARED,
			__uuidof(IDWriteFactory),
			reinterpret_cast<IUnknown**>(&m_pDWriteFactory));
		if (FAILED(hr))
			return false;
	}

	return true;
}
Beispiel #2
0
    HRESULT CreateDeviceIndependentResources() {
        HRESULT hr;

        hr = pD2D1CreateFactory(
                 D2D1_FACTORY_TYPE_SINGLE_THREADED,
                 __uuidof(ID2D1Factory),
                 NULL,
                 (void**)&pD2DFactory_
             );

        if (SUCCEEDED(hr)) {
            hr = pDWriteCreateFactory(
                     DWRITE_FACTORY_TYPE_SHARED,
                     __uuidof(IDWriteFactory),
                     reinterpret_cast<IUnknown**>(&pDWriteFactory_)
                 );
        }

        if (SUCCEEDED(hr)) {
            hr = pDWriteFactory_->CreateTextFormat(
                     CNJIni::GetSettings()->commentFontName.c_str(),
                     NULL,
                     CNJIni::GetSettings()->commentFontBold ? DWRITE_FONT_WEIGHT_BOLD : DWRITE_FONT_WEIGHT_NORMAL,
                     DWRITE_FONT_STYLE_NORMAL,
                     DWRITE_FONT_STRETCH_NORMAL,
                     static_cast<FLOAT>(iFontSize_),
                     L"ja-jp",
                     &pTextFormat_
                 );
        }

        if (SUCCEEDED(hr)) {
            hr = pTextFormat_->SetTextAlignment(DWRITE_TEXT_ALIGNMENT_LEADING);
        }

        if (SUCCEEDED(hr)) {
            hr = pTextFormat_->SetParagraphAlignment(DWRITE_PARAGRAPH_ALIGNMENT_NEAR);
        }

        if (SUCCEEDED(hr)) {
            hr = pTextFormat_->SetWordWrapping(DWRITE_WORD_WRAPPING_NO_WRAP);
        }

        return hr;
    }