IFACEMETHODIMP DrawInlineObject(
        Vector2 baselineOrigin,
        ICanvasTextInlineObject* inlineObject,
        boolean isSideways,
        boolean isRightToLeft,
        IInspectable* brush,
        CanvasGlyphOrientation glyphOrientation) override
    {
        return ExceptionBoundary(
            [&]
            {
                EnsureValidResource();

                auto dwriteInlineObject = Make<InternalDWriteInlineObject>(inlineObject, m_device);
                CheckMakeResult(dwriteInlineObject);

                auto deviceContextLease = As<ICanvasDeviceInternal>(m_device)->GetResourceCreationDeviceContext();

                ThrowIfFailed(m_dwriteTextRenderer->DrawInlineObject(
                    nullptr,
                    baselineOrigin.X,
                    baselineOrigin.Y,
                    ToDWriteGlyphOrientationAngle(glyphOrientation),
                    nullptr,
                    isSideways,
                    isRightToLeft,
                    DrawGlyphRunHelper::GetClientDrawingEffect(brush, deviceContextLease.Get()).Get()));
            });
    }
Exemplo n.º 2
0
    ComPtr<CanvasSwapChain> CanvasSwapChain::CreateNew(
        ICanvasDevice* device,
        ICoreWindow* coreWindow,
        float width,
        float height,
        float dpi,
        DirectXPixelFormat format,
        int32_t bufferCount)
    {
        CheckInPointer(device);
        CheckInPointer(coreWindow);

        auto dxgiSwapChain = As<ICanvasDeviceInternal>(device)->CreateSwapChainForCoreWindow(
            coreWindow,
            SizeDipsToPixels(width, dpi),
            SizeDipsToPixels(height, dpi),
            format,
            bufferCount,
            CanvasAlphaMode::Ignore);

        auto canvasSwapChain = Make<CanvasSwapChain>(
            device,
            dxgiSwapChain.Get(),
            dpi,
            true);
        CheckMakeResult(canvasSwapChain);

        return canvasSwapChain;
    }
Exemplo n.º 3
0
    ComPtr<CanvasSwapChain> CanvasSwapChain::CreateNew(
        ICanvasDevice* device,
        float width,
        float height,
        float dpi,
        DirectXPixelFormat format,
        int32_t bufferCount,
        CanvasAlphaMode alphaMode)
    {
        auto deviceInternal = As<ICanvasDeviceInternal>(device);

        int widthInPixels = SizeDipsToPixels(width, dpi);
        int heightInPixels = SizeDipsToPixels(height, dpi);

        ComPtr<IDXGISwapChain1> dxgiSwapChain = deviceInternal->CreateSwapChainForComposition(
            widthInPixels,
            heightInPixels,
            format,
            bufferCount,
            alphaMode);

        auto canvasSwapChain = Make<CanvasSwapChain>(
            device,
            dxgiSwapChain.Get(),
            dpi,
            false);
        CheckMakeResult(canvasSwapChain);

        ThrowIfFailed(canvasSwapChain->put_TransformMatrix(Matrix3x2{ 1, 0, 0, 1, 0, 0 }));

        return canvasSwapChain;
    }
Exemplo n.º 4
0
    ComPtr<CanvasCommandList> CanvasCommandList::CreateNew(
        ICanvasDevice* device)
    {
        auto d2dCommandList = As<ICanvasDeviceInternal>(device)->CreateCommandList();

        auto cl = Make<CanvasCommandList>(device, d2dCommandList.Get(), false);
        CheckMakeResult(cl);
        return cl;
    }
Exemplo n.º 5
0
 IFACEMETHODIMP CanvasTextFormatFactory::ActivateInstance(IInspectable** object)
 {
     return ExceptionBoundary(
         [&]
         {
             auto newCanvasTextFormat = Make<CanvasTextFormat>();
             CheckMakeResult(newCanvasTextFormat);
             ThrowIfFailed(newCanvasTextFormat.CopyTo(object));
         });
 }
Exemplo n.º 6
0
    IFACEMETHODIMP CanvasTextFormatFactory::GetOrCreate(
        IUnknown* resource,
        IInspectable** wrapper)
    {
        return ExceptionBoundary(
            [&]
            {
                ComPtr<IDWriteTextFormat> dwriteTextFormat;
                ThrowIfFailed(resource->QueryInterface(dwriteTextFormat.GetAddressOf()));

                auto newCanvasTextFormat = Make<CanvasTextFormat>(dwriteTextFormat.Get());
                CheckMakeResult(newCanvasTextFormat);
                ThrowIfFailed(newCanvasTextFormat.CopyTo(wrapper));
            });
    }