Jacek Caban
0a42d6a915
gdi32: Use ntgdi names for region functions.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-07 17:58:02 +02:00
Jacek Caban
8df14dac7a
gdi32: Use ntgdi names for region constructors.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-07 17:57:58 +02:00
Zhiyi Zhang
04b4d0f380
gdi32: Partially implement HALFTONE stretch mode.
...
COLORONCOLOR(STRETCH_DELETESCANS) was used in place of HALFTONE. COLORONCOLOR mode may delete rows
of pixels without trying to preserve information so it will cause Wine to render poorly when the
destination rectangle is small.
According to tests, HALFTONE mode uses box filter when doing integer downscaling and nearest
neighbor interpolation when doing upscaling in both horizontally and vertically. In other cases,
HALFTONE mode uses a lanczos3 like algorithm to interpolate pixels. There are also other heuristics
involved. For example, shrinking a 2x2 image to 1x1 may not use box filter depending on image data.
Since this algorithm is undocumented, it's difficult to reverse engineer the original algorithm and
produce identical results. Instead, this patch uses a naive implementation of bilinear interpolation
to implement HALFTONE mode and it produces good quality images.
For 8-bit and lower color depth images, nulldrv_StretchBlt should resize the images first and then
converts color depth.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46375
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-15 20:43:55 +02:00
Gabriel Ivăncescu
d4dc8fd2c2
gdi32: Move the loop through each clipped rectangle to the primitive blend funcs.
...
This is to prepare so we don't recalculate the lookup cache map for color
tables on every clipped rect (which is expensive).
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-16 22:39:46 +02:00
Alexandre Julliard
4a902de213
gdi32: Make GDI driver functions cdecl.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-06 21:47:58 +02:00
Daniel Lehman
3b8fde3f08
gdi32: Fix memory leak (Valgrind).
...
Signed-off-by: Daniel Lehman <dlehman25@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-20 15:34:01 +01:00
Alexandre Julliard
1c56b3b516
gdi32: Use the correct brush origin when the blit operation requires an intermediate bitmap.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-28 09:10:45 +02:00
Alexandre Julliard
97a9db43d2
gdi32: Pass the brush origin explicitly to the brush backend functions.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-28 09:08:41 +02:00
Alexandre Julliard
c54b667e25
gdi32: Add support for DIBINDEX colors in 1-bpp blits.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-08 21:29:51 +01:00
Huw Davies
cf386b8b64
gdi32: Pass a DC pointer to get_mono_dc_colors().
...
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-28 21:38:08 +09:00
Huw Davies
9efe66a83a
gdi32: Use lp_to_dp() instead of LPtoDP() in the dib driver.
...
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-27 22:21:10 +09:00
Huw Davies
36a0bb0f52
gdi32: Avoid unnecessary calls to get_dc_ptr().
...
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-27 22:21:09 +09:00
Huw Davies
a8044bebe8
gdi32: Add a mask_rect primitive for use when the src is 1bpp.
...
This essentially combines the format conversion with a copy_rect.
It cannot be used when stretching, since stretching of 1bpp is
slightly special. Similarly, it cannot be used if the dst is also
1bpp (hence there is no mask_rect_1) or if the rop involves the brush.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-14 17:52:35 +09:00
Nikolay Sivov
1aa53bc470
gdi32: Initialize 'param' field (Coverity).
...
For consistency with the rest of the code, initialize both
'free' and 'param' fields.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-22 10:46:35 +01:00
Nikolay Sivov
8a3f3c0817
gdi32/dibdrv: Fix a clipped_rects leak (Valgrind).
2014-04-25 11:05:19 +02:00
Alexandre Julliard
3a4864714d
gdi32: Don't copy unnecessary rows when shrinking in DELETESCANS mode.
2012-12-03 18:24:46 +01:00
Alexandre Julliard
36f2b09632
gdi32: Always return the full DIB surface in GetImage and adjust coordinates accordingly.
...
Based on a patch by Ken Thomases.
2012-10-15 15:25:04 +02:00
Alexandre Julliard
76272e0773
gdi32: Use BI_BITFIELDS to indicate that a 32-bpp DIB doesn't have an alpha channel.
2012-10-10 20:34:08 +02:00
Alexandre Julliard
86cf1126a5
gdi32: Return the full DIB height in GetImage instead of clipping to the visible rect.
2012-10-10 20:34:07 +02:00
Alexandre Julliard
319a87c86e
gdi32: Take into account the DIB rectangles when determining overlap for blits.
2012-06-04 22:23:13 +02:00
Alexandre Julliard
1416d0e6f1
gdi32: Remove the bitmap parameter from the Get/PutImage entry points.
2012-05-29 21:05:52 +02:00
Alexandre Julliard
7c4c233d12
gdi32: Add a helper function that implements PutImage on a bitmap.
2012-05-29 18:20:12 +02:00
Alexandre Julliard
cf85fb14ab
gdi32: Add a helper function that implements GetImage on a bitmap.
2012-05-29 18:20:11 +02:00
Alexandre Julliard
c2784e08fc
gdi32: Improve support of bitmaps without a color table in PutImage.
2012-05-29 18:16:30 +02:00
Alexandre Julliard
664442ab84
gdi32: Don't store the default color table in dib_info objects.
2012-05-23 17:22:17 +02:00
Alexandre Julliard
6a19d9f252
gdi32: Support drawing to a visible rectangle smaller than the whole bitmap in the DIB engine.
2012-05-01 14:28:39 +02:00
Alexandre Julliard
3ea711dd7c
gdi32: Store the bounds rectangle as a pointer in the DIB driver.
2012-04-27 12:49:20 +02:00
Alexandre Julliard
9674011d75
gdi32: Fix coordinates for row copies in mirrored vertical stretching.
2012-04-24 17:37:53 +02:00
Alexandre Julliard
34457aa4c3
gdi32: Add bounds tracking to all the DIB engine entry points.
2012-04-16 17:49:22 +02:00
Alexandre Julliard
6c028b19c5
gdi32: Avoid redundant computation of the gradient bounding rectangle.
2012-04-13 13:41:16 +02:00
Huw Davies
ff4045b110
gdi32: Use separate x and y parameters in the get_pixel primitive.
2012-01-18 16:27:39 +01:00
Alexandre Julliard
4e03247427
gdi32: Define a structure to make the brush state independent from the physdev.
2011-12-30 11:04:33 +01:00
Alexandre Julliard
c861284a02
gdi32: Add a helper function to add a rectangle to a region.
2011-12-28 11:04:30 +01:00
Alexandre Julliard
a80eafe8d7
gdi32: Re-create the brush bits only when the ROP has really changed.
2011-12-27 16:55:02 +01:00
Alexandre Julliard
8b3271c3b0
gdi32: Avoid making a copy of the device clipping region in the DIB driver.
2011-12-27 15:48:29 +01:00
Alexandre Julliard
56373bc491
gdi32: Use the get_clipped_rects helper in the blitting functions.
2011-12-27 15:41:21 +01:00
Alexandre Julliard
b761d0e1c6
gdi32: Add a helper function to compute the list of rectangles to paint after clipping.
2011-12-27 14:57:23 +01:00
Alexandre Julliard
9f410413a6
gdi32: Implement GetPixel in the null driver using GetImage.
2011-12-13 14:00:05 +01:00
Alexandre Julliard
0c194895a2
gdi32: Remove some color table size checks, we use full-size color tables now.
2011-12-12 20:52:59 +01:00
Alexandre Julliard
cae4ef81e6
gdi32: init_dib_info() can no longer fail, and no longer requires freeing.
2011-12-12 20:02:22 +01:00
Alexandre Julliard
d353c95d47
gdi32: Add a flag to request a default color table from init_dib_info.
2011-12-12 15:50:33 +01:00
Alexandre Julliard
25e2fae2a8
gdi32: Always use biClrUsed for the number of colors of internal BITMAPINFO structures.
2011-12-10 13:35:42 +01:00
Alexandre Julliard
360d4bc548
gdi32: Use the DIB engine and PutImage for the null driver triangular gradient implementation.
2011-12-05 17:19:32 +01:00
Alexandre Julliard
743b37df3d
gdi32: Implement triangular gradients in the DIB engine.
2011-12-05 16:36:03 +01:00
Alexandre Julliard
4c6807199e
gdi32: Use the DIB engine and PutImage for the null driver rectangular gradient implementation.
2011-11-30 12:59:11 +01:00
Alexandre Julliard
a135e47167
gdi32: Don't set gradient alpha channel for 8888 bitmaps created with bitfields.
2011-11-29 15:12:28 +01:00
Alexandre Julliard
e19a362407
gdi32: Implement rectangular gradients in the DIB engine.
2011-11-29 15:12:20 +01:00
Alexandre Julliard
bfdac3e885
gdi32: Add a fall back implementation of BlendImage using client-side blending.
2011-10-17 17:45:05 +02:00
Alexandre Julliard
a3a574fae0
gdi32: Implement a BlendImage entry point in the DIB driver.
2011-10-14 21:32:40 +02:00
Alexandre Julliard
d1d8b4de0b
gdi32: Move some common code out of the individual copy_rect functions.
2011-10-12 20:52:46 +02:00