Commit Graph

79 Commits

Author SHA1 Message Date
Huw Davies c429c595e8 gdi32: Explicitly write out the rops for copy_rect_1().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-25 19:59:07 +09:00
Huw Davies efd6292fae gdi32: Split out the various offset cases for copy_rect_1() into separate functions.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-25 19:59:05 +09:00
Huw Davies e1ce79ec94 gdi32: Explicitly write out the rops for mask_rect_32().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-25 19:59:03 +09:00
Huw Davies 4b39c7b944 gdi32: Explicitly write out the rops for copy_rect_32().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-25 19:59:00 +09:00
Huw Davies 1d0e25e600 gdi32: Move the outer loop into separate functions for each direction.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-25 19:58:58 +09:00
Huw Davies a875e3c6ab gdi32: Unroll the start- and end-of-line loops.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-25 01:10:21 +09:00
Huw Davies 45b848ccd1 gdi32: Handle the case of a partial source byte separately.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-25 01:10:21 +09:00
Huw Davies 6c7ed1214c gdi32: Eliminate a masking operation by generating a larger colour table.
This helps significantly for large rectangles.

This is only done for the 32-bpp case as typically the lower bit
depths would more likely be used to draw small icons and the like,
where the extra fixed cost of this optimization will potentially
outweigh the savings.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-25 01:10:21 +09:00
Huw Davies 778faedbae gdi32: Copy 1-bpp pixels one byte at a time.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-15 19:56:38 +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
Huw Davies f7b6a7d77a gdi32: Precompute the destination colours for sources with a colour table.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-07 21:23:24 +09:00
Alexandre Julliard 336be2f694 gdi32: Use shorter constants for byte and word masks to avoid warnings. 2015-03-04 21:50:35 +09: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 db3a8d6c0c gdi32: Avoid binary ROPs when shrinking in DELETESCANS mode. 2012-12-03 18:24:46 +01:00
Alexandre Julliard 6f6e919e2b gdi32: Avoid binary ROPs when stretching in DELETESCANS mode. 2012-12-03 18:24:45 +01:00
Alexandre Julliard abdce5c2c8 gdi32: Use the faster memset for vertical gradients. 2012-11-30 19:12:17 +01:00
Alexandre Julliard d10d95608c gdi32: Make blend_subpixel inline. 2012-11-30 19:12:17 +01:00
Alexandre Julliard 7339308e16 gdi32: Add faster implementation of the pattern_rects primitive when we don't need an AND mask. 2012-11-29 19:40:13 +01:00
Alexandre Julliard 2aff4696b6 gdi32: Add assembly helpers for filling solid rectangles. 2012-11-29 12:31:13 +01:00
Alexandre Julliard cb7917f9c8 gdi32: Add faster implementations of the solid_rects primitive for the common case of R2_COPYPEN. 2012-11-29 12:17:55 +01:00
Huw Davies 9247328371 gdi32: Implement sub-pixel glyph smoothing. 2012-10-30 18:09:00 +01:00
Alexandre Julliard 6e325afaa7 gdi32: Handle a missing source alpha directly in the blend_rect primitive instead of modifying the source data. 2012-10-10 20:34:08 +02:00
Alexandre Julliard 139aeba3ef gdi32: Implement dithering of solid brushes when drawing to DDBs. 2012-05-23 20:24:03 +02:00
Alexandre Julliard 9968f3083a gdi32: Use the default color table when mapping colors in bitmaps that don't have one. 2012-05-23 17:22:07 +02:00
Alexandre Julliard b8e4cd81ab gdi32: Simplify creation of hatch masks and avoid endianness issues. 2012-05-23 17:22:03 +02:00
Alexandre Julliard b708b40105 gdi32: Pass a rop_mask_bits object to the pattern_rects primitive. 2012-05-22 21:52:44 +02:00
Alexandre Julliard 3c2502a8c7 gdi32: Add support for dithering pattern brushes when painting to monochrome bitmaps. 2012-05-22 17:43:52 +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 025b58870e gdi32: Always pass the actual coordinates to the get_pixel_ptr functions. 2012-05-01 11:41:19 +02:00
Jeff Muizelaar 2da2f001cf gdi32: Improve performance of common case of AlphaBlend. 2012-04-30 20:03:28 +02:00
Alexandre Julliard 6c2235cf98 gdi32: Fix some typos in the 4-bpp shrink_row function. 2012-04-23 14:58:12 +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 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 d357392b8b gdi32: Remove support for private color maps. 2011-12-12 20:02:17 +01:00
Alexandre Julliard 7ea59c107f gdi32: Use dithering also for 1-bpp gradients. 2011-12-05 16:36:08 +01:00
Alexandre Julliard 743b37df3d gdi32: Implement triangular gradients in the DIB engine. 2011-12-05 16:36:03 +01:00
Alexandre Julliard a869fc47bd gdi32: Implement 8-bpp and 4-bpp gradient dithering. 2011-11-29 15:12:26 +01:00
Alexandre Julliard ce2f542267 gdi32: Implement 16-bpp gradient dithering. 2011-11-29 15:12:23 +01:00
Alexandre Julliard e19a362407 gdi32: Implement rectangular gradients in the DIB engine. 2011-11-29 15:12:20 +01:00
Huw Davies 04396063c8 gdi32: Add solid_line primitives. 2011-11-21 11:51:47 +01:00
Huw Davies 5c6f630b98 gdi32: Add draw_glyph primitives. 2011-11-14 15:25:28 +01:00
Huw Davies 70be58c17d gdi32: Add get_pixel primitives. 2011-10-19 16:59:21 +02:00
Huw Davies ddbaa9491a gdi32: Add pixel_to_colorref primitives. 2011-10-19 16:58:51 +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 a9be526a9c gdi32: Use a reduced precision for RGB to palette mapping in DIB conversions. 2011-10-14 00:47:05 +02:00
Alexandre Julliard e79033e6fa gdi32: Add a helper for RGB to color index mapping to avoid redundant shifts. 2011-10-13 20:03:07 +02:00
Alexandre Julliard a413916802 gdi32: Get rid of the return value in DIB conversion functions, they never fail now. 2011-10-13 20:01:50 +02:00
Alexandre Julliard 587f492fdf gdi32: Add support for arbitrary DIB bitfields for 16-bpp conversions. 2011-10-13 20:01:34 +02:00
Alexandre Julliard b084e52bf6 gdi32: Add support for arbitrary DIB bitfields for 32-bpp conversions. 2011-10-13 20:01:14 +02:00
Alexandre Julliard 8a41d75e29 gdi32: Add a helper function to look up color table entries, and default to 0 for missing entries. 2011-10-12 20:52:46 +02:00