Commit Graph

327 Commits

Author SHA1 Message Date
Alexandre Julliard 3e51dd7515 gdi32: Use a better algorithm for CreateRoundRectRgn. 2012-01-06 12:53:20 +01:00
Alexandre Julliard 94ffc49e02 gdi32: Draw rectangles in the order specified by the current arc direction. 2012-01-05 20:54:07 +01:00
Alexandre Julliard d858041a19 gdi32: Get rid of the pen deferring support, all pen styles are implemented now. 2012-01-04 16:53:17 +01:00
Alexandre Julliard c82d2a034f gdi32: Implement dashed wide lines. 2012-01-04 16:06:21 +01:00
Alexandre Julliard bc5428600b gdi32: Add a helper function for drawing multiple line segments. 2012-01-04 16:06:01 +01:00
Alexandre Julliard a59c53b312 gdi32: Add a helper function for drawing a wide line segment. 2012-01-04 15:50:31 +01:00
Alexandre Julliard 8b1bab524b gdi32: Skip empty segments at the beginning and end of a line to make sure the caps are correct. 2012-01-04 15:10:10 +01:00
Alexandre Julliard 5f2371c229 gdi32: Only create the round cap region once per call. 2012-01-04 15:02:05 +01:00
Alexandre Julliard 618425ac4c gdi32: Fix skipping of zero-length dashes. 2012-01-04 14:57:52 +01:00
Alexandre Julliard 5721cbf0e8 gdi32: Add stubs for the OpenGL entry points in the DIB driver. 2012-01-03 12:37:16 +01:00
Alexandre Julliard 2c9c9f78fb gdi32: Don't bother computing interior regions when the brush is null. 2011-12-30 12:53:35 +01:00
Alexandre Julliard 488bf107a9 gdi32: Implement brushed pens. 2011-12-30 11:04:35 +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 cc9836bda0 gdi32: Pass a brush_pattern structure to the SelectPen entry point for brushed pens. 2011-12-30 11:04:29 +01:00
Alexandre Julliard f85bb35280 gdi32: Pass a brush_pattern structure to the SelectBrush entry point. 2011-12-30 11:04:26 +01:00
Alexandre Julliard c1c8c92875 gdi32: Add helpers to paint a region with the brush or pen. 2011-12-29 10:10:45 +01:00
Alexandre Julliard 579afe5cc6 gdi32: Implement PolyPolygon in the DIB driver. 2011-12-29 09:57:58 +01:00
Alexandre Julliard f5549ae1d0 gdi32: Use a region to render geometric and wide pens in LineTo. 2011-12-29 09:57:41 +01:00
Alexandre Julliard da8ae11300 gdi32: Use a region to render geometric and wide pens in Rectangle. 2011-12-29 09:53:25 +01:00
Alexandre Julliard 64ed56366c gdi32: Use a region to render geometric and wide pens in PolyPolyline. 2011-12-29 00:02:24 +01:00
Alexandre Julliard 9ee690c984 gdi32: Implement returning a region for 1-pixel wide dashed pen lines. 2011-12-28 23:03:03 +01:00
Alexandre Julliard 3188c30229 gdi32: Implement returning a region for 1-pixel wide solid pen lines. 2011-12-28 23:02:42 +01:00
Alexandre Julliard 0429d9181f gdi32: Add support for updating a region from the pen backend functions instead of painting directly. 2011-12-28 23:02:10 +01:00
Alexandre Julliard f155db574f gdi32: Add support for 1-pixel wide PS_USERSTYLE pens. 2011-12-28 17:42:32 +01:00
Alexandre Julliard 305be80e2f gdi32: Add support for PS_ALTERNATE pens. 2011-12-28 17:42:27 +01:00
Alexandre Julliard e364809a90 gdi32: Add support for 1-pixel wide geometric dashed pens. 2011-12-28 17:42:14 +01:00
Alexandre Julliard 881f635ce9 gdi32: Extended pens are always transparent. 2011-12-28 16:33:31 +01:00
Alexandre Julliard 5f03c6c81b gdi32: Wide cosmetic pens don't support dashes. 2011-12-28 13:53:15 +01:00
Alexandre Julliard ab63eb5c40 gdi32: Fix the scaling of the width of cosmetic pens. 2011-12-28 13:53:12 +01:00
Alexandre Julliard 9b8d920cb7 gdi32: Pass the clip region to the brush_rect helper and add a similar helper for pens. 2011-12-28 11:28:21 +01:00
Alexandre Julliard 18c20964e1 gdi32: Add support for PS_INSIDEFRAME pens when drawing rectangles. 2011-12-28 11:17:41 +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 0c840f66ed gdi32: Compute the correct rectangle interior when using wide pens. 2011-12-27 20:53:35 +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 d0f110e2a9 gdi32: Use the get_clipped_rects helper in the pen functions. 2011-12-27 15:00:00 +01:00
Alexandre Julliard 63ebfc591e gdi32: Use the get_clipped_rects helper in the text functions. 2011-12-27 14:58:52 +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 73b9c86384 gdi32: Always use proper RGB colors for monochrome DDB pattern brushes. 2011-12-22 21:18:38 +01:00
Alexandre Julliard 8f929ae04d gdi32: Add a common helper for computing pen and brush masks. 2011-12-22 20:10:31 +01:00
Alexandre Julliard 56532d0cf7 gdi32: Recompute the foreground masks on every use to support PALETTEINDEX colors. 2011-12-22 19:50:29 +01:00
Alexandre Julliard e166ec0bb0 gdi32: Recompute the background masks on every use to support PALETTEINDEX colors. 2011-12-22 19:50:07 +01:00
Alexandre Julliard 9237638c0e gdi32: Recompute the pen masks on every use to support PALETTEINDEX colors. 2011-12-22 19:49:23 +01:00
Alexandre Julliard 43373c29ef gdi32: Recompute the brush masks on every use to support PALETTEINDEX colors. 2011-12-22 19:47:40 +01:00
Huw Davies 7c2351566a gdi32: Add support for geometric solid pens. 2011-12-22 17:19:19 +01:00
Alexandre Julliard 7f3a7ae585 gdi32: Fix handling of COLORREFs with illegal values for the high byte. 2011-12-22 17:19:13 +01:00
Alexandre Julliard a585659e31 gdi32: Remove support for deferring brush calls to X11, all brush types are supported now. 2011-12-19 20:15:42 +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 49ae736022 gdi32: Implement GetNearestColor in the DIB driver. 2011-12-12 20:20:06 +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 d357392b8b gdi32: Remove support for private color maps. 2011-12-12 20:02:17 +01:00
Alexandre Julliard 65a2c885f1 gdi32: Don't create a default color table for pattern brushes, use the DC colors instead. 2011-12-12 15:50:37 +01:00
Alexandre Julliard d5fe87e2e8 gdi32: Select the pattern brush only when first used. 2011-12-12 15:50:37 +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
Huw Davies e155a8054b gdi32: Add support for wide cosmetic pens. 2011-12-09 21:15:30 +01:00
Alexandre Julliard 494bfa866a gdi32: Remove the nb_colors fields in the bitmap object, we always allocate a full size color table. 2011-12-09 21:15:22 +01:00
Alexandre Julliard c441ebc21d gdi32: Fix handling of DIB_PAL_COLORS in the various DIB functions. 2011-12-09 21:15:22 +01:00
Alexandre Julliard 91d19b4b17 gdi32: Add a helper to build a color table from the DIB_PAL_COLORS bitmap info. 2011-12-08 21:31:59 +01:00
Alexandre Julliard 71199eab77 gdi32: Don't make a copy of the DIB color table when selecting it into a DC. 2011-12-08 20:00:55 +01:00
Francois Gouget 22cb047ed4 gdi32: Make init_dib_info() static. 2011-12-06 17:53:15 +01:00
Alexandre Julliard 7534d47b1b gdi32: Pass the total visible region in the SetDeviceClipping driver entry point. 2011-12-06 15:51:00 +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 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 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 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 0ab46cd5e9 gdi32: Avoid reading past the end of the indices array.
Spotted by Marcus Meissner.
2011-11-24 17:17:07 +01:00
Huw Davies 224e51fcf5 gdi32: Add an option to allow pen_lines to draw a closed figure. 2011-11-24 17:17:04 +01:00
Alexandre Julliard 670f25cc8f gdi32: Add support for anti-aliasing in the null driver text output fallback. 2011-11-21 12:15:53 +01:00
Alexandre Julliard 1b63d5a610 gdi32: Add a helper function to determine anti-aliasing flags. 2011-11-21 11:52:30 +01:00
Huw Davies 04396063c8 gdi32: Add solid_line primitives. 2011-11-21 11:51:47 +01:00
Huw Davies f168f838f1 gdi32: Simplify the Bresenham line drawing. 2011-11-21 11:51:23 +01:00
Alexandre Julliard ffaf0c4966 gdi32: Don't mark a local variable static. 2011-11-17 17:34:14 +01:00
Huw Davies 666f83bc0f gdi32: Add a helper to retrieve the octant bias. 2011-11-16 17:00:23 +01:00
Huw Davies e9612c1af0 gdi32: Add support for drawing text in the dib driver. 2011-11-14 15:25:28 +01:00
Huw Davies 5c6f630b98 gdi32: Add draw_glyph primitives. 2011-11-14 15:25:28 +01:00
Huw Davies 18520f2e63 gdi32: Calculate the min/max color component intensities for 17 glyph levels. 2011-11-14 15:25:27 +01:00
Huw Davies f284f5970a gdi32: Move the ETO_OPAQUE rectangle drawing to the dib driver. 2011-11-14 15:25:27 +01:00
Huw Davies 5990091bbf gdi32: Expose a solid_rects function. 2011-11-14 15:25:27 +01:00
Huw Davies 15fabcdefe gdi32: Keep track of the text pixel color. 2011-11-14 15:25:27 +01:00
Alexandre Julliard 26f5e2c6e7 gdi32: Implement the CopyBitmap entry point in the null driver. 2011-11-08 19:25:37 +01:00
Alexandre Julliard 9391c6a757 gdi32: Add a CopyBitmap driver entry point. 2011-11-08 19:25:05 +01:00
Alexandre Julliard 03496d6fba gdi32: Avoid copying the brush pattern if the format matches the DC. 2011-11-08 13:32:36 +01:00
Alexandre Julliard bb162ba4b4 gdi32: Reselect the pattern brush on every use if it's mapped with DIB_PAL_COLORS. 2011-11-08 13:18:01 +01:00
Alexandre Julliard 37b56554a6 gdi32: Add support for pattern brushes in the DIB driver. 2011-11-03 12:50:13 +01:00
Alexandre Julliard 24ac8c66bb gdi32: Pass the full brush contents in the SelectBrush driver entry point. 2011-11-02 21:41:15 +01:00
Alexandre Julliard 6bf6575c5c gdi32: Store a pointer instead of a global handle for DIB pattern brushes. 2011-11-02 12:02:27 +01:00
Alexandre Julliard 95cba0c0f4 gdi32: Add a DC driver entry point for GdiGradientFill. 2011-10-31 23:51:38 +01:00
Alexandre Julliard f1f5f33468 gdi32: Emulate DDB support using the DIB driver when the graphics driver doesn't support bitmaps. 2011-10-31 20:21:15 +01:00
Alexandre Julliard c9bdcbafab gdi32: Allocate the bits for a DDB the first time it's used in any DIB driver call. 2011-10-31 20:06:37 +01:00
Alexandre Julliard a8444d7fd1 gdi32: Add driver entry points for a number of font functions. 2011-10-24 23:45:37 +02:00
Alexandre Julliard 2b1b11d681 gdi32: Rename the EnumDeviceFonts entry point to EnumFonts since it's not limited to device fonts. 2011-10-24 23:34:33 +02:00
Huw Davies f6c7e96a61 gdi32: Implement GetPixel. 2011-10-19 16:59:25 +02:00
Huw Davies 70be58c17d gdi32: Add get_pixel primitives. 2011-10-19 16:59:21 +02:00
Huw Davies 2ac6a1bbf6 gdi32: Implement SetPixel. 2011-10-19 16:58:57 +02:00
Huw Davies ddbaa9491a gdi32: Add pixel_to_colorref primitives. 2011-10-19 16:58:51 +02:00
Huw Davies a3b5f270a8 gdi32: Add support for non-rgb colorrefs. 2011-10-19 16:58:40 +02:00
Huw Davies 0967de74db gdi32: Introduce a unified function to perform COLORREF to pixel color mapping. 2011-10-19 16:58:31 +02:00
Alexandre Julliard 5267c1316b gdi32: Get rid of the DC_FUNCTIONS typedef. 2011-10-17 20:39:54 +02: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 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
Alexandre Julliard d1d8b4de0b gdi32: Move some common code out of the individual copy_rect functions. 2011-10-12 20:52:46 +02:00
Alexandre Julliard 8f4d50ea4b gdi32: Add an all-one alpha channel when converting a DIB for blending. 2011-10-12 20:52:46 +02:00
Huw Davies db6fe9ee9b gdi32: Use the helper to get the bounding rectangle. 2011-10-12 17:10:09 +02:00
Alexandre Julliard 6c07876e87 gdi32: Add an AlphaBlend entry point in the DIB driver. 2011-10-11 15:34:50 +02:00
Marcus Meissner 9437705c2a dibdrv: Mark get_rop_codes as hidden. 2011-10-03 15:50:54 -05:00
Huw Davies 9b7ea6f417 gdi32: Forward StretchBlt calls from the dib driver to the null driver. 2011-09-27 18:46:16 +02:00
Huw Davies 268b8382cd gdi32: Implement stretch_bitmapinfo. 2011-09-27 18:46:04 +02:00
Huw Davies 15c4754e80 gdi32: stretch_bitmapinfo may need to adjust the dst visrect. 2011-09-27 18:15:23 +02:00
Huw Davies c6e483cbd1 gdi32: Make clip_line external. 2011-09-27 18:15:21 +02:00
Alexandre Julliard 7bcd8fa20e gdi32: Copy bits in the correct order for the overlap case in the individual copy_rect functions. 2011-09-22 10:22:56 +02:00
Alexandre Julliard 5fd305c31f gdi32: Add helper functions for copying a DIB line. 2011-09-22 10:18:14 +02:00
Alexandre Julliard 3ace501190 gdi32: Copy DIB rectangles in the correct order when source and destination overlap. 2011-09-22 10:11:27 +02:00
Alexandre Julliard c819e4bdea gdi32: Add a null driver fallback for AlphaBlend, using a new BlendImage driver entry point. 2011-09-14 11:57:45 +02:00
Alexandre Julliard 7696168dce gdi32: Add a placeholder function for DIB stretching. 2011-09-14 11:17:02 +02:00
Huw Davies fcea548464 gdi32: The offsets should be signed. 2011-09-09 17:33:11 +02:00
Huw Davies 5bd003edaa gdi32: When creating a dib_info from a ddb, always make a copy of the colour map. 2011-09-08 11:10:55 +02:00
Alexandre Julliard 2a5cabc22d gdi32: Move DIB driver definitions to dibdrv.h. 2011-09-08 10:41:35 +02:00
Alexandre Julliard d12d98511c gdi32: Allocate the DIB driver on first use, and free it only upon DC destruction. 2011-09-08 10:41:19 +02:00
Alexandre Julliard cef1832bfb gdi32: Add a driver entry point for CreateCompatibleDC. 2011-09-07 18:13:06 +02:00
Alexandre Julliard f4e9bdb904 gdi32: Always set biClrUsed in internal BITMAPINFO structures. 2011-09-07 12:07:15 +02:00
Alexandre Julliard bff79eb2b9 gdi32: Forward the null driver GetImage to the DIB driver since the bits are in DIB format. 2011-08-30 20:13:52 +02:00
Alexandre Julliard 79ef408cd7 gdi32: Add a helper function to initialize DIB info from a bitmap object. 2011-08-29 19:51:24 +02:00
Alexandre Julliard 987a18a55c gdi32: Remove an unused variable. 2011-08-29 12:08:26 +02:00
Huw Davies 75e2e9cf3f gdi32: Add an exception handler to catch bad pointers passed by an application. 2011-08-23 16:53:56 +02:00
Huw Davies 1def8d635a gdi32: Add support for all of the ternary rops. 2011-08-23 16:53:55 +02:00
Huw Davies 95f1abc8d8 gdi32: Add a copy_rect helper function. 2011-08-23 16:53:55 +02:00
Huw Davies ff307d573a gdi32: Move the dib driver's GetImage and PutImage to a new source file. 2011-08-23 16:53:55 +02:00
Huw Davies 925fa10865 gdi32: Change the object-level brush function to accept a stand-alone dib and a separate clip region. 2011-08-22 16:19:40 +02:00
Huw Davies c6f6c3f727 gdi32: Implement Polyline and PolyPolyline in the dib driver. 2011-08-22 16:19:24 +02:00
Huw Davies 0f40ad8a3d gdi32: Move to using a multi-line pen object-level function. 2011-08-22 16:19:15 +02:00
Huw Davies 1e83fd0076 gdi32: Use the gdi_image_bits structure to maintain the dib driver's bits. 2011-08-22 16:18:54 +02:00
Huw Davies 2e908e067c gdi32: Simplify dibdrv_PutImage a little. 2011-08-22 16:18:24 +02:00
Huw Davies de213f2c66 gdi32: Avoid directly accessing the bits ptr where possible. 2011-08-22 16:18:13 +02:00
Huw Davies bdc3b9c0a9 gdi32: Avoid a possible unnecessary conversion if PutImage is called with zero biClrUsed. 2011-08-22 16:15:45 +02:00
Huw Davies 40742c2f72 gdi32: Fix colour table comparison. 2011-08-22 16:15:13 +02:00
Huw Davies c5f484597f gdi32: Simplify dibdrv_GetImage by merging the stand-alone and selected bitmap cases. 2011-08-05 15:24:58 +02:00
Huw Davies 37423cec7c gdi32: Fix dibdrv_PutImage for the selected bitmap case. 2011-08-05 15:22:48 +02:00