Commit Graph

528 Commits

Author SHA1 Message Date
Vincent Povirk 092531df71 gdiplus: Add non-gdi32 implementation of GdipDrawPath.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-10-14 09:17:28 +02:00
Vincent Povirk 99e5f24b6d gdiplus: GdipDrawLine ignores 0-pixel pens.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-10-14 09:17:08 +02:00
Vincent Povirk f696e431ad gdiplus: Add clipping to GdipDrawImage.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-20 10:36:22 +09:00
Vincent Povirk c6afa50db6 gdiplus: Add clipping to GDI32_GdipDrawDriverString.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-20 10:36:18 +09:00
Vincent Povirk 3fd47e1be1 gdiplus: Add clipping to GDI32_GdipFillRegion.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-20 10:36:10 +09:00
Vincent Povirk 410163a9f2 gdiplus: Implement BeginContainer metafile record.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-19 10:59:51 +09:00
Vincent Povirk f5b14a7ab6 gdiplus: Implement GdipBeginContainer.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-19 10:59:51 +09:00
Dmitry Timoshkov 2f7a2fdea3 gdiplus: Reimplement metafile loading using gdi32 instead of IPicture.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-22 12:39:12 +09:00
Vincent Povirk 3f6faddd56 gdiplus: Implement playback/recording for SetClipRect.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-17 11:54:08 +09:00
Vincent Povirk f28803c0a4 gdiplus: Add support for containers in metafiles.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-16 12:00:55 +09:00
Vincent Povirk cc8cc65f79 gdiplus: Fix mismatched use of Begin/EndContainer and Save/RestoreGraphics.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-15 12:55:10 +09:00
Vincent Povirk af500612f2 gdiplus: Implement recording/playback for TranslateWorldTransform.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-15 12:55:05 +09:00
Vincent Povirk 690e0f269c gdiplus: Implement recording/playback for SetWorldTransform.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-08 12:35:21 +09:00
Vincent Povirk cfae34a7e2 gdiplus: Implement recording/playback for RotateWorldTransform.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-08 12:35:19 +09:00
Vincent Povirk 69a7c2c6a2 gdiplus: Implement recording/playback for MultiplyWorldTransform.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-08 12:35:17 +09:00
Vincent Povirk a65718a3e7 gdiplus: Implement ResetWorldTransform metafile playback/recording.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-03 16:43:11 -05:00
Vincent Povirk 271c2bd62c gdiplus: Implement metafile recording for ScaleWorldTransform.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-03 16:43:05 -05:00
Vincent Povirk 5c6247f7e2 gdiplus: Implement writing Clear operation to metafiles.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-03 10:22:26 +09:00
Vincent Povirk 9df85c48aa gdiplus: Account for world transform in GdipGraphicsClear.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-03 10:22:14 +09:00
Vincent Povirk 7fbf0deede gdiplus: Implement GdipGetImageAttributesAdjustedPalette.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-14 12:16:59 +09:00
Vincent Povirk be5b270690 gdiplus: Return visible clip bounds in world coordinates.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-07 12:32:21 +09:00
Vincent Povirk a9e4e3b403 gdiplus: Implement GdipRecordMetafileStream.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-07 12:58:20 +09:00
Sebastian Lackner aa70a90c6e gdiplus: Do not use GdipAlloc and GdipFree in internal functions.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-11 13:44:22 +09:00
Nikolay Sivov 07f8493895 gdiplus: Remove always true condition (Coverity). 2015-07-06 15:13:27 +09:00
Andrew Eikum 1d5914b777 gdiplus: Avoid unnecessary pre-multiplied alpha conversions in GdipDrawImagePointsRect.
We can avoid doing a pre-multiplied alpha conversion by detecting
whether we need to perform any graphics operations ahead of time.
2015-04-06 12:04:15 +09:00
Vincent Povirk 9c579023f0 gdiplus: Fix blend_colors when alpha channel differs.
When picking a color halfway between 100% white (0xffffffff) and fully
transparent (0x00000000), the result was 50% opaque 50% grey
(0x80808080) when it should really be 50% opaque white (0x80ffffff).
This had a tendency to create grey fringes on things. The fix is to
weight the non-alpha components based on how much they contribute to
the final alpha value.
2015-03-25 19:46:38 +09:00
Vincent Povirk 6b97abf930 gdiplus: Handle large input rect in GdipMeasureCharacterRanges. 2015-03-24 14:06:13 +09:00
Vincent Povirk 6ee26aca16 gdiplus: Apply page scale to pen thickness. 2015-03-24 14:06:02 +09:00
Vincent Povirk 137128fa50 gdiplus: Fonts in UnitWorld shouldn't be scaled to the page unit. 2015-03-23 16:20:39 +09:00
Vincent Povirk e9d9ef591b gdiplus: GdipGetDC doesn't set the alpha channel for a 32-bit dib. 2015-03-19 14:07:41 +09:00
Vincent Povirk 0bec10bc3d gdiplus: Access bitmaps by row in alpha_blend_bmp_pixels. 2015-03-18 19:38:10 +09:00
Vincent Povirk 08c1e6cd96 gdiplus: Do not access Bitmap bits when drawing transparent pixels. 2015-03-18 19:38:07 +09:00
Changhui Liu 5fa7402a36 gdiplus: Fix get_graphics_bounds when window origin point changed. 2015-01-19 18:47:47 +01:00
Vincent Povirk 4361cbabd7 gdiplus: Fix error when drawing from a rectangle outside bitmap bounds. 2014-10-30 11:59:59 +09:00
André Hentschel f1ed09fdd9 gdiplus: Adjust identical conditions (PVS-Studio). 2014-10-28 14:05:08 +09:00
Vincent Povirk 57f1d4489f gdiplus: Use integer math to apply color matrices. 2014-09-18 16:28:17 +02:00
Vincent Povirk 76a96b70f7 gdiplus: Skip resampling when drawing a bitmap with no scaling/rotation. 2014-09-18 16:28:06 +02:00
Vincent Povirk 60f558876e gdiplus: Account for transforms when calculating hdc bounds. 2014-07-09 21:16:35 +02:00
Vincent Povirk 4def66c11c gdiplus: Prevent NULL StringFormat in gdip_format_string. 2014-04-14 20:19:01 +02:00
Vincent Povirk 392d3b657a gdiplus: Remove a useless comparison. 2014-03-25 10:56:09 +01:00
Vincent Povirk 526143cb05 gdiplus: Limit image output to the bounds of the Graphics object. 2014-03-25 10:56:04 +01:00
Frédéric Delanoy 73288e1100 gdiplus: Use BOOL type where appropriate. 2014-03-18 11:39:13 +01:00
Vincent Povirk 9a5375989d gdiplus: Fix an overzealous optimization. 2014-03-14 11:31:19 +01:00
Vincent Povirk 06555a96ad gdiplus: Account for negative height/width in GdipDrawImagePointsRect. 2014-03-14 11:31:14 +01:00
Vincent Povirk 78459aea0d gdiplus: Improve GdipFillRectangles parameter validation. 2014-02-20 11:18:24 +01:00
Vincent Povirk 2d487e22d6 gdiplus: Move metafile functions to metafile.c. 2014-01-29 12:38:46 +01:00
Vincent Povirk 6518edfa5f gdiplus: Implement writing SetPageTransform records. 2014-01-17 11:00:28 +01:00
Vincent Povirk 51b873b3ca gdiplus: Mark the Graphics object as busy before freeing it. 2014-01-06 16:02:40 +01:00
Vincent Povirk c491d52821 gdiplus: Write FillRects records to metafiles. 2013-11-25 15:15:52 +01:00
Vincent Povirk 8babdc860a gdiplus: Forward GdipFillRectangle to GdipFillRectangles. 2013-11-25 15:15:52 +01:00
Vincent Povirk fbcbd09bb3 gdiplus: Fix StringFormatFlagsLineLimit handling. 2013-11-20 11:25:04 +01:00
Vincent Povirk feef61743d gdiplus: Use clip region in GdipFillPath. 2013-10-31 09:46:36 +01:00
Vincent Povirk 08b650202c gdiplus: Use clip region in GdipDrawPath. 2013-10-31 09:46:29 +01:00
Frédéric Delanoy 70bc6d5f78 gdiplus: Use BOOL type where appropriate. 2013-10-03 12:54:40 +02:00
Vincent Povirk 85b989c1fa gdiplus: Don't expand the drawing area to include empty glyphs. 2013-09-23 21:31:07 +02:00
Vincent Povirk ce9de5c4bb gdiplus: Skip drawing lines of text with only empty glyphs. 2013-09-23 21:31:00 +02:00
Akihiro Sagawa e29e4caca3 gdiplus: Fix empty glyph handling. 2013-09-23 20:32:27 +02:00
Vincent Povirk 814f9cf7e4 gdiplus: Only clip strings if rectangle width and height are positive. 2013-08-15 16:24:45 +02:00
Dmitry Timoshkov f575eb494b gdiplus: Reimplement GdipSetClipRect to avoid potential problems with rotating world transform. 2013-07-30 20:51:54 +02:00
Dmitry Timoshkov cdc3e820cd gdiplus: Fix clipping region bounds calculation with rotating transform. 2013-07-30 20:51:52 +02:00
Dmitry Timoshkov 14f34c15d1 gdiplus: Store graphics clipping region in device coordinates. 2013-07-19 11:58:23 +02:00
Dmitry Timoshkov 73f7b857b3 Revert "gdiplus: Ignore gdiplus page and world transformations when creating a gdi32 clipping region.".
This reverts commit 61dafbb701.
2013-07-12 12:14:59 +02:00
Dmitry Timoshkov 84ef3d484c gdiplus: get_font_hfont() should ask gdi32 to match font height against the character height instead of cell height. 2013-06-19 19:18:39 +02:00
Dmitry Timoshkov 6ab04040e5 gdiplus: GdipMeasureCharacterRanges should treat empty layout extents as infinite when StringFormatFlagsNoClip is specified.
Unlike GdipMeasureString which always treats empty layout extents as infinite.
2013-03-15 11:43:24 +01:00
Dmitry Timoshkov db746fe897 gdiplus: GdipMeasureCharacterRanges shouldn't add margins to string bounds. 2013-03-15 11:43:13 +01:00
Dmitry Timoshkov 61dafbb701 gdiplus: Ignore gdiplus page and world transformations when creating a gdi32 clipping region. 2013-03-13 11:30:11 +01:00
Dmitry Timoshkov 9fb88c7999 gdiplus: GdipDrawString should not clip the string if StringFormatFlagsNoClip is specified. 2013-03-04 11:19:18 +01:00
Dmitry Timoshkov 737790603c Revert "gdiplus: Add support for StringFormatFlagsNoClip.".
This reverts commit bfa35f37a7.
This patch breaks string alignment.
2013-03-04 11:19:16 +01:00
Vincent Povirk 7b004c1714 gdiplus: Store the image type on a Graphics object in case the image is freed. 2013-03-04 11:15:38 +01:00
Dmitry Timoshkov 1896e5575e gdiplus: If a device doesn't support AlphaBlend don't convert image to PARGB. 2013-02-25 10:40:37 +01:00
Dmitry Timoshkov 6b474b555e gdiplus: Reimplement GdipFillRectangles using GdipFillPath. 2013-02-19 10:42:45 +01:00
Dmitry Timoshkov bb16c926b4 gdiplus: Slightly simplify GdipFillClosedCurve2 implementation. 2013-02-19 10:42:36 +01:00
Dmitry Timoshkov 338958287a gdiplus: Reimplement GdipDrawRectangles using GdipDrawPath. 2013-02-19 10:42:32 +01:00
Dmitry Timoshkov 1223569d64 gdiplus: Reimplement GdipDrawRectangle using GdipDrawPath. 2013-02-19 10:42:29 +01:00
Dmitry Timoshkov 981223a736 gdiplus: Reimplement GdipDrawPie using GdipDrawPath. 2013-02-19 10:42:24 +01:00
Dmitry Timoshkov 6df50f1d16 gdiplus: Reimplement GdipDrawEllipse using GdipDrawPath. 2013-02-19 10:42:16 +01:00
Dmitry Timoshkov ad49f83c7d gdiplus: Forward GdipDrawBezier to GdipDrawBeziers. 2013-02-19 10:42:10 +01:00
Dmitry Timoshkov ae8826c43e gdiplus: Reimplement GdipDrawBeziers using GdipDrawPath. 2013-02-19 10:42:03 +01:00
Dmitry Timoshkov 89f380f69b gdiplus: Reimplement GdipDrawArc using GdipDrawPath. 2013-02-19 10:41:46 +01:00
Dmitry Timoshkov 2fd1bf60ae gdiplus: Reimplement GdipDrawLines using GdipDrawPath. 2013-02-19 10:41:37 +01:00
Dmitry Timoshkov 03228b1784 gdiplus: Reimplement GdipDrawCurve2 using GdipDrawPath. 2013-02-19 10:41:18 +01:00
Dmitry Timoshkov 4233b82872 gdiplus: Slightly simplify GdipDrawClosedCurve2 implementation. 2013-02-19 10:41:01 +01:00
Dmitry Timoshkov cc54d1eb68 gdiplus: Forward GdipDrawBezierI to GdipDrawBezier. 2013-02-19 10:40:43 +01:00
Dmitry Timoshkov f817fb56e8 gdiplus: Avoid a crash in GdipDrawImagePointRect. 2013-02-18 15:06:17 +01:00
Dmitry Timoshkov 8ec2354b32 gdiplus: Forward GdipDrawLinesI to GdipDrawLines. 2013-02-18 10:36:18 +01:00
Dmitry Timoshkov 7cccd36c9a gdiplus: Forward GdipDrawLineI to GdipDrawLine. 2013-02-18 10:36:11 +01:00
Dmitry Timoshkov 0ed65a2d3a gdiplus: Forward GdipDrawLine to GdipDrawLines. 2013-02-18 10:36:01 +01:00
Andrew Talbot 32d070afb0 gdiplus: Avoid signed-unsigned integer comparisons. 2013-01-24 10:49:34 +01:00
Dmitry Timoshkov 9532de882f gdiplus: Make GdipCreateFromHDC2 not fail in case of hDevice != NULL. 2013-01-23 12:52:16 +01:00
Andrew Talbot e4351708d5 gdiplus: Remove unneeded address-of operator from array name. 2012-12-06 13:01:07 +01:00
Vincent Povirk ba4ef584d7 gdiplus: Fix graphics bounds for memory DC's. 2012-12-06 13:00:49 +01:00
Vincent Povirk 81d9ffa041 gdiplus: Always use AlphaBlend to draw to 32-bit DIB's. 2012-12-06 12:59:56 +01:00
Vincent Povirk 423d50eb3b gdiplus: Use clipping region in alpha_blend_pixels. 2012-11-28 14:41:43 +01:00
Dmitry Timoshkov b9ead1a7ea gdiplus: Avoid more cases of allocating a transformation matrix on the heap. 2012-11-19 11:47:27 +01:00
Dmitry Timoshkov 39ec8ce67e gdiplus: Store transformation matrix directly in the objects. 2012-11-08 15:37:49 +01:00
Dmitry Timoshkov 0a81a34643 gdiplus: Avoid GdipCloneMatrix calls for the graphics transformation matrix. 2012-11-07 11:58:27 +01:00
Dmitry Timoshkov fa184bc2c2 gdiplus: Allocate a copy of the graphics transformation matrix on the stack instead of cloning it. 2012-11-06 20:00:27 +01:00
Dmitry Timoshkov 12340af3f9 gdiplus: Add support for extra transformation in GdipMeasureDriverString and GdipDrawDriverString. 2012-11-06 20:00:22 +01:00
Vincent Povirk 91a3e5fc10 gdiplus: Reimplement GdipCreateMetafileFromEmf without using IPicture. 2012-11-01 10:50:45 +01:00
Vincent Povirk 0cbec5508b gdiplus: Implement drawing metafiles with an emf handle. 2012-11-01 10:50:37 +01:00