Commit Graph

415 Commits

Author SHA1 Message Date
Vincent Povirk 9793ab9fa6 gdiplus: Implement DriverStringOptionsRealizedAdvance in software. 2011-05-24 11:56:53 +02:00
Vincent Povirk 11754452d2 gdiplus: Change the sign we use for origin.x in DrawDriverString.
Apparently characters whose black boxes extend to the left of the origin have
a negative x value, but characters whose black boxes extend above the origin
have a positive y value.
2011-05-24 11:56:46 +02:00
Vincent Povirk d436e51872 gdiplus: Add basic metafile recording support. 2011-05-23 11:15:41 +02:00
Vincent Povirk 64841aac83 gdiplus: Respect the CmapLookup flag in GDI32_GdipDrawDriverString. 2011-04-05 13:36:56 +02:00
Vincent Povirk 11f0662c60 gdiplus: Don't settle on a font size until absolutely necessary.
When we create a new font, we should store its height in a REAL field so
we don't have to round it. Further, when we calculate the width, we should
base the calculation on the metrics of a font at the height we will use, to
prevent rounding errors when the graphics transform will enlarge the font.
2011-04-05 13:36:56 +02:00
Vincent Povirk be0af56be3 gdiplus: Add a software implementation of GdipDrawDriverString. 2011-04-05 13:36:56 +02:00
Vincent Povirk 32baa8ba4e gdiplus: Add helper for translating GpFont to HFONT. 2011-04-05 13:36:56 +02:00
Gerald Pfeifer 25764d79c0 gdiplus: Initialize a variable in SOFTWARE_GdipFillRegion to avoid a compiler warning. 2011-04-04 14:55:10 +02:00
Vincent Povirk 15140a722e gdiplus: Add basic implementation of GdipDrawDriverString. 2011-04-01 10:48:25 +02:00
Vincent Povirk b3dfe973ad gdiplus: Add test for GdipSetTextRenderingHint and make it pass. 2011-03-29 12:37:03 +02:00
Vincent Povirk 19b71b035e gdiplus: Implement gamma adjustment. 2011-03-28 17:16:26 +02:00
Vincent Povirk 805f0321eb gdiplus: Implement color transforms. 2011-03-28 17:16:23 +02:00
Vincent Povirk 314ec7178d gdiplus: Select the font into the appropriate hdc in GdipMeasureString. 2011-03-18 16:05:09 +01:00
Vincent Povirk 504b7c34d6 gdiplus: Remove the gdi32 line gradient drawing code.
It's unused now.
2011-03-17 10:42:45 +01:00
Vincent Povirk 71eb248c30 gdiplus: Implement GdipFillRectangle based on GdipFillPath. 2011-03-17 10:42:32 +01:00
Vincent Povirk 5190f8a5f1 gdiplus: Use GdipFillPath to implement GdipFillPolygonI. 2011-03-17 10:42:22 +01:00
Vincent Povirk 86d55d43c5 gdiplus: Use GdipFillPath to implement GdipFillPolygon. 2011-03-17 10:42:17 +01:00
Vincent Povirk 2ce5be2ce3 gdiplus: Use GdipFillPath to implement GdipFillPie. 2011-03-15 17:14:06 +01:00
Vincent Povirk 4aa99eaf3b gdiplus: Use GdipFillPath to implement GdipFillEllipse. 2011-03-15 17:14:06 +01:00
Vincent Povirk b5c2015999 gdiplus: Add software implementation of GdipFillPath. 2011-03-15 17:14:06 +01:00
Vincent Povirk 833316f91d gdiplus: Call GdiAlphaBlend only once per GdipFillRegion call. 2011-03-15 17:14:06 +01:00
Vincent Povirk 77f5a07c1b gdiplus: Remove gdi32 fallback for bitmaps from GdipFillRegion.
We can always do a fill directly to the image bits when gdi32 can do it.
2011-03-15 17:14:06 +01:00
Vincent Povirk 4edff21ea2 gdiplus: Prefer to not use gdi32 for gradient and texture brushes. 2011-03-11 11:48:18 +01:00
Vincent Povirk 8a036abc5c gdiplus: Implement software rendering of texture brushes. 2011-03-11 11:48:08 +01:00
Vincent Povirk 2302e80cc9 gdiplus: Don't use gdi32 to scale or draw from outside bitmaps. 2011-03-11 11:47:50 +01:00
Vincent Povirk 8b6dafda45 gdiplus: Implement bilinear interpolation. 2011-03-11 11:47:34 +01:00
Vincent Povirk 51cf90d8ca gdiplus: Move bitmap interpolation into a separate function. 2011-03-11 11:47:32 +01:00
Vincent Povirk 5488ea1468 gdiplus: Implement tiling wrap modes. 2011-03-10 14:10:16 +01:00
Vincent Povirk d891a8c16c gdiplus: Apply image attributes to bitmaps before resampling them. 2011-03-10 14:10:16 +01:00
Vincent Povirk 870fdaf6ce gdiplus: Read drawn bitmaps in one step instead of using getpixel. 2011-03-10 14:10:15 +01:00
Vincent Povirk a7f95eeb7e gdiplus: Move ImageAttributes mapping into a helper function. 2011-03-10 14:10:15 +01:00
Vincent Povirk a2631ae1d2 gdiplus: Add tests for interpolation mode and make them pass. 2011-03-10 14:10:15 +01:00
Vincent Povirk d0e6aa0204 gdiplus: Fix a handle leak in GdipDrawString. 2011-03-09 12:31:05 +01:00
Maarten Lankhorst b8a1e6c687 gdiplus: Implement GdipAddPathString. 2011-03-03 17:47:15 +01:00
Maarten Lankhorst c057694883 gdiplus: Add tests and fix GdipDrawImagePointsRect. 2011-03-03 17:47:15 +01:00
Maarten Lankhorst fe8e08a5d6 gdiplus: Clean up gdip_format_string. 2011-03-03 17:47:15 +01:00
Vincent Povirk e029d71c4b gdiplus: Stub GdipGetHemfFromMetafile. 2011-01-27 14:15:59 +01:00
Vincent Povirk 0c17a0b5bb gdiplus: Add a software implementation of line gradient brushes. 2011-01-24 12:13:57 +01:00
Vincent Povirk b7e664bc5c gdiplus: Add a software implementation of hatch brushes. 2011-01-24 12:13:54 +01:00
Vincent Povirk 60cd477342 gdiplus: Add a software implementation of GdipFillRegion. 2011-01-24 12:13:51 +01:00
Vincent Povirk 6acffba564 gdiplus: Factor the matrix creation code out of GdipTransformPoints. 2011-01-24 12:13:09 +01:00
Vincent Povirk b689e63a86 gdiplus: Factor out the gdi32 code of GdipFillRegion. 2011-01-24 12:13:00 +01:00
Vincent Povirk 8f1b722790 gdiplus: Allow more drawing operations to succeed without an HDC.
This should bring things to the mostly-regression-free-but-easier-to-debug
state I was expecting when I removed DIBs from many bitmaps.
2010-11-10 17:18:40 +01:00
Vincent Povirk 3e86d43030 gdiplus: Don't rely on an HDC in GdipMeasureString. 2010-11-01 11:33:51 +01:00
Vincent Povirk 867f3d39e7 gdiplus: Don't rely on an HDC in GdipMeasureCharacterRanges. 2010-11-01 11:33:40 +01:00
Vincent Povirk 9d0cd09597 gdiplus: Add a fallback method for getting HDC's from Graphics objects.
Native does this in more cases (at least for all bitmap graphics
objects), but using gdi32 objects when we can should perform better.
2010-08-18 09:42:58 +02:00
Vincent Povirk 2a345f36e3 gdiplus: Use the software method to draw HBITMAP-less bitmaps. 2010-08-17 11:55:33 +02:00
Vincent Povirk 9a6eabf0b5 gdiplus: Create HBITMAP-less bitmap objects for exotic pixel formats. 2010-08-17 11:55:33 +02:00
Vincent Povirk 963c7090d5 gdiplus: Don't require an HDC to get the resolution of a graphics object. 2010-08-17 11:55:33 +02:00
Vincent Povirk c3ca6be2b9 gdiplus: Give a nice warning when we try to draw to an HDC-less graphics. 2010-08-17 11:55:33 +02:00
Vincent Povirk 5601860b76 gdiplus: Don't require an HDC in get_graphics_bounds. 2010-08-17 11:55:33 +02:00
Vincent Povirk 85a5710688 gdiplus: Don't require an HDC for the convert_unit function. 2010-08-17 11:55:33 +02:00
Wade Gobel cceb3dc77a gdiplus: Implemented GdipFillClosedCurve and GdipFillClosedCurveI. 2010-07-28 14:01:52 +02:00
Wade Gobel f4e2af65c5 gdiplus: Fixed GdipFillClosedCurve2 and GdipFillClosedCurve2I in the cases that count <= 1. 2010-07-28 14:01:52 +02:00
Vincent Povirk 0c8ac02440 gdiplus: Stub GdipRecordMetafileStream. 2010-07-05 11:54:54 +02:00
Vincent Povirk 48ceb3d67f gdiplus: Stub GdipRecordMetafile. 2010-07-05 11:54:52 +02:00
Vincent Povirk 85c0e83dc5 gdiplus: Stub GdipGetRenderingOrigin. 2010-06-25 10:25:45 +02:00
Francois Gouget a56375fcb5 gdiplus: Make measure_ranges_callback() static. 2010-06-24 10:34:44 +02:00
Vincent Povirk 435762024f gdiplus: Always treat out of range string sizes as INT_MAX. 2010-05-10 10:03:00 +02:00
Vincent Povirk 0ae0c0c09e gdiplus: Implement GdipSetImageAttributesWrapMode. 2010-05-10 10:01:48 +02:00
Vincent Povirk 15ebd84daf gdiplus: Implement bitmap color keying. 2010-05-10 10:01:39 +02:00
Vincent Povirk 68ce9e925a gdiplus: Prevent integer overflows when rounding text bounds.
Mono calls GdipMeasureString with a height so large that rounding and
converting it to an integer gives a negative result.
2010-04-19 14:54:11 +02:00
Vincent Povirk ede103c699 gdiplus: Add fixmes for unimplemented imageattributes features. 2010-04-16 12:13:00 +02:00
Vincent Povirk 8b2543b750 gdiplus: Always use software to draw bitmaps to bitmaps. 2010-04-16 12:12:54 +02:00
Vincent Povirk 4247247787 gdiplus: Implement color remapping. 2010-04-16 12:12:48 +02:00
Vincent Povirk bb9c1878c3 gdiplus: Correct the coordinate transform for non-rectangular parallelograms.
Apparently matrices in gdiplus don't work the way I think they do.
2010-04-16 12:12:37 +02:00
Vincent Povirk 7791f02fd9 gdiplus: Transform bitmaps to non-rectangular parallelograms in software. 2010-04-16 12:12:30 +02:00
Vincent Povirk 9c380b1e8e gdiplus: Use a helper function to draw image data from bitmaps in software.
This will make it possible to use the same codepath for non-bitmap graphics
objects and to create a software implementation for other drawing operations.
2010-04-16 12:12:24 +02:00
Vincent Povirk 2f9c6091fc gdiplus: Use UnitPixel for metafile bounds when creating from HMETAFILE. 2010-04-16 12:10:13 +02:00
Vincent Povirk 9a4618a4ba gdiplus: Print the GdipCreateHalftonePalette FIXME only once. 2010-04-09 18:34:57 +02:00
Vincent Povirk ade2506029 gdiplus: Implement GdipFlush. 2010-04-02 16:53:07 +02:00
Vincent Povirk deb6466f3f gdiplus: Implement GdipMeasureCharacterRanges. 2010-03-31 11:40:20 +02:00
Vincent Povirk 21109a40fb gdiplus: Fix the linesfilled calculation in GdipMeasureString. 2010-03-31 11:40:08 +02:00
Vincent Povirk 2cde94a89e gdiplus: Rewrite GdipDrawString to share code with GdipMeasureString. 2010-03-31 11:39:58 +02:00
Vincent Povirk 3cee74c61d gdiplus: Rewrite GdipMeasureString using a helper function. 2010-03-31 11:39:51 +02:00
Vincent Povirk 32d03da998 gdiplus: Add a missing NULL check to GdipMeasureString. 2010-03-31 11:37:51 +02:00
Vincent Povirk 5433969ec8 gdiplus: Don't use gdi32 to draw to bitmaps with formats it can't handle. 2010-03-29 12:19:48 +02:00
Justin Chevrier b4bfa6e1c1 gdiplus: Basic implementation of GdipGetNearestColor with changes to test to reflect fixes. 2010-02-26 14:18:59 +01:00
Vincent Povirk 00dec58bb2 gdiplus: Convert formats that can't be drawn by gdi32 when drawing bitmaps. 2010-02-15 12:20:00 +01:00
Alistair Leslie-Hughes 03e31f9b86 gdiplus: Implement GdipIsVisibleClipEmpty. 2010-01-05 12:29:43 +01:00
Vincent Povirk 2005fe9881 gdiplus: Add traces to unimplemented functions in graphics.c. 2010-01-04 11:44:52 +01:00
Vincent Povirk 01b32951a5 gdiplus: Fix a memory leak in GdipCreateMetafileFromWmf. 2010-01-04 11:41:27 +01:00
Vincent Povirk 1aea88cac1 gdiplus: Implement GdipGetImage*Resolution. 2009-12-28 12:57:37 +01:00
Vincent Povirk c38d334266 gdiplus: Fix typo in GdipCreateMetafileFromWmf. 2009-12-28 12:57:23 +01:00
Vincent Povirk 7ded3d83c6 gdiplus: Add some traces for the values of point arguments. 2009-12-28 11:54:27 +01:00
Vincent Povirk f8ca372459 gdiplus: Add trace for values of new graphics and image objects. 2009-12-21 15:01:23 +01:00
Huw Davies 68bacfb8d5 gdiplus: Fix a memory leak.
Found by Valgrind.
2009-12-14 12:04:04 +01:00
Vincent Povirk 39dc81cc80 gdiplus: Implement GdipSetImagePalette. 2009-12-14 12:04:03 +01:00
Vincent Povirk d2e999d2e8 gdiplus: Use the preset blend when drawing linear gradients. 2009-09-15 17:34:56 -05:00
Vincent Povirk 0595fc5e03 gdiplus: Implement GdipGetImageRawFormat. 2009-09-15 17:34:12 -05:00
Vincent Povirk 99012b9a4e gdiplus: Don't use the supplied rect to calculate font scaling factors. 2009-09-08 13:44:25 +02:00
Vincent Povirk 94ab23377d gdiplus: Implement GdipDrawImagePointRect. 2009-09-08 13:44:01 +02:00
Vincent Povirk aef202507b gdiplus: Remove unused bitmap flipping code. 2009-09-08 12:13:07 +02:00
Vincent Povirk 895c6d8e1e gdiplus: Use AlphaBlend for 32-bit images with alpha channels. 2009-08-29 16:48:56 +02:00
Vincent Povirk 436b3be651 gdiplus: Create DIBs instead of IPictures in CreateBitmapFromScan0. 2009-08-29 16:48:55 +02:00
Andrew Eikum f5896a2be0 gdiplus: Implement GdipIsVisibleRect. 2009-08-27 11:51:24 +02:00
Andrew Eikum d06dd2d7cb gdiplus: Implement GdipIsVisiblePoint. 2009-08-27 11:51:08 +02:00
Andrew Eikum 39f6f491a6 gdiplus: Add utility function get_visible_clip_region. 2009-08-27 11:50:23 +02:00
Andrew Eikum 32996e0a11 gdiplus: Implement GdipIsVisibleRegionPoint. 2009-08-26 14:57:18 +02:00
Vincent Povirk e72defc8f7 gdiplus: Do not call IPicture_Render directly from GdipDrawImageI. 2009-08-21 11:28:29 +02:00
Andrew Eikum ef0ee6e556 gdiplus: Implement GdipGetVisibleClipBounds. 2009-08-13 16:44:09 +02:00
Andrew Eikum fdf48f1d4d gdiplus: Create utility function get_graphics_bounds. 2009-08-13 16:43:41 +02:00
Ken Sharp e072d36a87 gdiplus: Add GdipIsVisibleRectI stub. 2009-08-06 12:25:53 +02:00
Alistair Leslie-Hughes 7b2292fac1 gdiplus: Add GdipRecordMetafileI stub. 2009-08-04 15:21:00 +02:00
Vincent Povirk e0d9d17536 gdiplus: Do not draw line-breaking spaces. 2009-08-03 14:55:29 +02:00
Vincent Povirk b330ebfe8e gdiplus: Don't use -escapement angle in GdipDrawString. 2009-08-03 14:55:15 +02:00
Vincent Povirk 849af30eb8 gdiplus: Use brush_fill_path in GdipFillRectangleI. 2009-07-13 10:25:30 +02:00
Vincent Povirk 6a8a770c76 gdiplus: Use brush_fill_path in GdipFillRegion. 2009-07-13 10:25:26 +02:00
Vincent Povirk 38fc894c96 gdiplus: Use brush_fill_path in GdipFillPolygonI. 2009-07-13 10:25:19 +02:00
Vincent Povirk 15fef07887 gdiplus: Use brush_fill_path in GdipFillPolygon. 2009-07-13 10:25:10 +02:00
Vincent Povirk bedbd40f5e gdiplus: Use brush_fill_path in GdipFillPie. 2009-07-13 10:25:06 +02:00
Vincent Povirk e306316c7d gdiplus: Use brush_fill_path in GdipFillEllipse. 2009-07-13 10:25:02 +02:00
Andrew Eikum 1ef13941f6 gdiplus: Implement GdipSaveGraphics and GdipRestoreGraphics. 2009-07-08 20:35:20 +02:00
Andrew Eikum a06c2570e5 gdiplus: Don't modify container list if container restoration fails. 2009-07-08 20:35:09 +02:00
Andrew Eikum 632aef3d8b gdiplus: Implement GdipBeginContainer2 and GdipEndContainer. 2009-07-07 12:33:10 +02:00
Vincent Povirk 9fceef33b7 gdiplus: Don't crash when a NULL format is passed to GdipDrawString. 2009-07-01 11:38:11 +02:00
Andrew Eikum 4c0edba681 gdiplus: Implement GdipDrawCurve3 and GdipDrawCurve3I. 2009-06-30 12:58:31 +02:00
Vincent Povirk aa9602db10 gdiplus: Implement horizontal alignment in GdipDrawString. 2009-06-30 12:31:37 +02:00
Andrew Eikum c2aa66d506 gdiplus/tests: Add tests for GdipDrawCurve2I. 2009-06-29 12:29:35 +02:00
Andrew Eikum fe55f0df2a gdiplus/tests: Add tests for GdipDrawCurveI. 2009-06-29 12:29:32 +02:00
Ken Sharp e096b59ceb gdiplus: Add GdipIsVisibleRegionPointI stub. 2009-06-23 15:53:00 +02:00
Francois Gouget 489bd52aff gdiplus: Remove spaces before '\n's. 2009-06-15 13:42:29 +02:00
Ken Sharp e3f4859961 gdiplus: Add stubs for GdipGetVisibleClipBoundsI, GdipDrawDriverString & GdipMeasureDriverString. 2009-06-10 12:19:45 +02:00
Andrew Eikum 119e9af74a gdiplus: Test cases and parameter checks for GdipDrawCurve. 2009-06-08 12:41:58 +02:00
Stephan Rose eb3904d02b gdiplus: Add support for vertical string alignment to GdipDrawString. 2009-06-05 15:19:56 +02:00
Andrew Eikum 156eeb08be gdiplus: Stubs for GdipDrawImagePoints and GdipDrawImagePointsI. 2009-06-04 12:38:37 +02:00
Andrew Eikum eec8d511cc gdiplus: Stubs for GdipDrawImagePointRect and GdipDrawImagePointRectI. 2009-06-03 11:53:25 +02:00
Andrew Eikum c02e75cf78 gdiplus: Stubs for GdipCreateMetafileFromFile, GdipCreateMetafileFromStream. 2009-06-02 12:08:44 +02:00
Andrew Eikum b850008bec gdiplus: Stub for GdipComment. 2009-06-02 11:57:22 +02:00
Andrew Eikum 3091506609 gdiplus: Stubs for GdipBeginContainer and GdipBeginContainerI. 2009-06-01 16:16:06 +02:00
Vincent Povirk 60167dfb74 gdiplus: Implement partially transparent solid fill brushes. 2009-05-21 16:17:52 +02:00
Vincent Povirk c486e8147d gdiplus: Implement GdipTransformPointsI. 2009-05-20 10:51:42 +02:00
Vincent Povirk 2af29ed916 gdiplus: Implement GdipTransformPoints. 2009-05-20 10:51:33 +02:00
Vincent Povirk 0f80aa8816 gdiplus: Add a trace to GdipMeasureString. 2009-05-14 11:13:35 +02:00
Vincent Povirk 3dd5ce7874 gdiplus: Add a trace to GdipDrawString. 2009-05-14 11:13:29 +02:00
Vincent Povirk 323e7e68eb gdiplus: Use brush_fill_path in GdipFillRectangle. 2009-05-07 14:44:22 +02:00
Vincent Povirk 27b47ead7e gdiplus: Stub GdipSetRenderingOrigin. 2009-05-07 14:44:22 +02:00
Vincent Povirk cb478a3258 gdiplus: Don't draw outside of gradient lines.
Currently, gradients are drawn by filling a series of quadrilaterals,
with one side equal to a gradient line and the other side equal to the
edge of the bounding rectangle of the area being filled. A single
pixel can be filled many times, and that causes flicker.
2009-05-04 12:50:42 +02:00
Vincent Povirk 966fd5ec09 gdiplus: Properly draw points outside of line gradients.
Theoretically, a line gradient covers the area enclosed by the
starting and ending gradient lines, which intersect the start and end
points respectively and are perpendicular to a line joining the start
and end points.
2009-05-04 12:50:33 +02:00
Vincent Povirk a6161307cf gdiplus: Account for blend factors and positions in line gradients. 2009-05-04 12:50:18 +02:00
Vincent Povirk c3d2395669 gdiplus: Don't leak a device context when GdipCreateFromHWND fails. 2009-04-27 13:23:05 +02:00
Vincent Povirk 8a3d9ff773 gdiplus: Only release device contexts created internally. 2009-04-27 13:23:00 +02:00
Vincent Povirk 0879b767ae gdiplus: GdipDrawString: Handle either a width or height of 0 sanely.
Based on Aric's recent patch.
2009-04-02 15:09:55 +02:00
Vincent Povirk 68dba4eff3 gdiplus: Support line gradient brushes in GdipFillPath. 2009-03-24 13:57:39 +01:00
Aric Stewart 43caae8386 gdiplus: In GdipDrawString do not NULL terminate the buffer. It is unneeded and overruns the buffer. 2009-02-16 11:47:42 +01:00
Nikolay Sivov 9f0edc5e7c gdiplus: Implemented GdipFillRegion. 2009-02-04 15:40:59 +01:00
Nikolay Sivov 8c096167d7 gdiplus: Add testing for ObjectBusy in some Graphics methods. 2009-02-03 12:48:46 +01:00
Nikolay Sivov f8edb068e7 gdiplus: Implemented GdipSetClipHrgn. 2009-02-03 12:48:35 +01:00
Nikolay Sivov bcfe4e7e46 gdiplus: Implemented GdipGetClipBounds/GdipGetClipBoundsI. 2009-02-03 12:48:27 +01:00
Nikolay Sivov 5da52e0677 gdiplus: Implemented GdipTranslateClip/GdipTranslateClipI. 2009-02-02 15:21:43 +01:00