[PATCH] d2d1: Initial implementation of bitmap render target

Henri Verbeet hverbeet at gmail.com
Wed Oct 19 05:13:58 CDT 2016


On 14 October 2016 at 18:12, Nikolay Sivov <nsivov at codeweavers.com> wrote:
> +    if (!pixel_size && size)
> +    {
> +        texture_desc.Width = ceilf((size->width * parent_target->desc.dpiX) / 96.0f);
> +        texture_desc.Height = ceilf((size->height * parent_target->desc.dpiY) / 96.0f);
> +        dxgi_rt_desc.dpiX = (texture_desc.Width * 96.0f) / size->width;
> +        dxgi_rt_desc.dpiY = (texture_desc.Height * 96.0f) / size->height;
> +    }
> +    else if (pixel_size && !size)
> +    {
> +        texture_desc.Width = pixel_size->width;
> +        texture_desc.Height = pixel_size->height;
> +        dxgi_rt_desc.dpiX = parent_target->desc.dpiX;
> +        dxgi_rt_desc.dpiY = parent_target->desc.dpiY;
> +    }
> +    else if (pixel_size && size)
> +    {
> +        texture_desc.Width = pixel_size->width;
> +        texture_desc.Height = pixel_size->height;
> +        dxgi_rt_desc.dpiX = (pixel_size->width * 96.0f) / size->width;
> +        dxgi_rt_desc.dpiY = (pixel_size->height * 96.0f) / size->height;
> +    }
> +    else
> +    {
> +        texture_desc.Width = parent_target->pixel_size.width;
> +        texture_desc.Height = parent_target->pixel_size.height;
> +        dxgi_rt_desc.dpiX = parent_target->desc.dpiX;
> +        dxgi_rt_desc.dpiY = parent_target->desc.dpiY;
> +    }
It may just be taste, but I think this is a bit harder to follow than
it needs to be. What do you think about the following?

    if (pixel_size)
    {
        texture_desc.Width = pixel_size->width;
        texture_desc.Height = pixel_size->height;
    }
    else if (size)
    {
        texture_desc.Width = ceilf((size->width *
parent_target->desc.dpiX) / 96.0f);
        texture_desc.Height = ceilf((size->height *
parent_target->desc.dpiY) / 96.0f);
    }
    else
    {
        texture_desc.Width = parent_target->pixel_size.width;
        texture_desc.Height = parent_target->pixel_size.height;
    }

    if (size)
    {
        dxgi_rt_desc.dpiX = (texture_desc.Width * 96.0f) / size->width;
        dxgi_rt_desc.dpiY = (texture_desc.Height * 96.0f) / size->height;
    }
    else
    {
        dxgi_rt_desc.dpiX = parent_target->desc.dpiX;
        dxgi_rt_desc.dpiY = parent_target->desc.dpiY;
    }



More information about the wine-devel mailing list