Commit Graph

56 Commits

Author SHA1 Message Date
Jacek Caban e33bdb8749 gdi32: Use NtGdiCreateClientObj for enhmetafile objects.
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-09 22:15:30 +02:00
Jacek Caban b0240461f1 gdi32: Rename gdi_private.h to ntgdi_private.h.
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-09 22:15:30 +02:00
Jacek Caban 06afb958d4 gdi32: Store ntgdi object types in handle table.
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-08 21:12:52 +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
Jacek Caban a96fcf21b0 gdi32: Introduce gdi_obj_header and use it to store gdi_obj_funcs.
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-01 22:34:31 +02:00
Alexandre Julliard b1d920bb9f gdi32: Use wide-character string literals.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-06 17:34:27 +01:00
Alexandre Julliard aa90a5969f gdi32: Build with msvcrt.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-05 10:44:16 +01:00
Shawn M. Chapla 4e4b1d1406 gdi32: Implement EMR_POLYDRAW16 playback.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-27 11:25:09 +02:00
Shawn M. Chapla 84d2cf02ed gdi32: Pass correct pointer to PolyDraw during EMR_POLYDRAW playback.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-27 11:25:07 +02:00
Alex Henrie 1fcae3c260 gdi32: Handle HeapAlloc failure in SetEnhMetaFileBits (scan-build).
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-12 22:47:45 +02:00
Michael Stefaniuc fb7a8d92fd gdi32: Use the ARRAY_SIZE() macro.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-08 12:46:18 +02:00
Vincent Povirk b6da3547d8 gdi32: Check that emf records are within the file.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-09 15:55:01 +02:00
Vincent Povirk 8d2676fd14 gdi32: Check for truncated EMF files.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-09 15:54:08 +02:00
Huw Davies 1def41b903 gdi32: Don't bother using the return value of HeapFree().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-22 12:21:09 +01:00
Andrew Eikum 083e61fddf gdi32: Update metafile world transform immediately in winnt mode.
The Chrome browser print function implements their own handling for
EMR_MODIFYWORLDTRANSFORM which calls ModifyWorldTransform on the HDC
directly without ever calling PlayEnhMetaFileRecord. In Wine, this
transformation would get discarded when the callback function returned,
causing the page to be printed at the wrong scale.

Tests show that the transform is updated immediately during
PlayEnhMetaFileRecord. In addition, a modified transform persists
between callbacks until PlayEnhMetaFileRecord is called on a relevant
type of callback, at which point the transform is reverted before
playing back the record.

Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-25 18:30:18 +02:00
Michael Stefaniuc 8acdf5e7bf gdi32: Use wine_dbgstr_rect() to trace a RECT.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-05 23:22:04 +09:00
Huw Davies 078f192c66 gdi32: Rename the struct representing an embedded WMF in an EMF.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-08 23:25:16 +09:00
Huw Davies 19d1416cef gdi32: If the WMF was created by GetWinMetaFileBits() then return the original EMF.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-08 23:25:16 +09:00
Michael Stefaniuc 4b7adc087a gdi32: Use wine_dbgstr_rect() to trace RECTs.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-21 18:42:02 +09:00
Piotr Caban 69e37ff05e gdi32: Use advanced graphics mode when setting world transform in PlayEnhMetaFileRecord.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-21 18:26:52 +09:00
Huw Davies 66351b3de3 gdi32: Implement playback of the GradientFill EMF record.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-08 23:01:38 +09:00
Thomas Faber 8a390c8661 gdi32: Avoid uninitialized variable use in EnumEnhMetaFile (MSVC). 2015-03-30 20:05:16 +09:00
André Hentschel 88e8102570 gdi32: Fix typo in a condition (PVS-Studio). 2014-10-28 14:05:19 +09:00
Frédéric Delanoy 0f2bed51bd Assorted spelling fixes. 2014-02-10 15:47:29 +01:00
Michael Stefaniuc 7589bbeee4 gdi32: Avoid using CONST. 2013-09-23 11:53:59 +02:00
Alexandre Julliard df357093cc gdi32: Get rid of the GDIOBJHDR type. 2012-10-17 13:48:45 +02:00
Huw Davies 1c1fff557d gdi32: Pass a NULL user-style array to ExtCreatePen if the user-style count is zero. 2011-10-28 17:26:44 +02:00
Alexandre Julliard 2116493653 gdi32: Fix the blend function handling for the AlphaBlend enhanced metafile record. 2011-07-29 20:08:53 +02:00
Dmitry Timoshkov 9bc5946cde gdi32: Use graphics mode specified at the EMF creation time when playing EMR_EXTTEXTOUT record. 2011-02-24 15:49:27 +01:00
Mikhail Maroukhine 8fd8d9e96a gdi32: Fix compiler warnings with flag -Wcast-qual. 2010-03-29 12:13:55 +02:00
Rob Shearman eb81fa283b gdi32: Fix memory leaks on EMF_Create_HENHMETAFILE failure. 2009-12-14 16:14:38 +01:00
Alexandre Julliard 13608c8b18 gdi32: Avoid use of some 16-bit types. 2009-12-07 14:18:29 +01:00
Alexandre Julliard 1ac23b9b0f gdi32: Don't include wingdi16.h by default. 2009-12-07 14:18:29 +01:00
Alexandre Julliard 55fc90220f gdi32: Fix SetEnhMetaFileBits last error handling. 2009-04-07 20:55:59 +02:00
Alexandre Julliard de831f334c gdi32: Release GDI handles before freeing the object.
This makes it unnecessary to hold the GDI lock during destruction.
2009-01-28 18:45:21 +01:00
Alexandre Julliard 311c53db4f gdi32: Allocate and initialize GDI objects before giving them a handle.
This makes it unnecessary to hold the GDI lock since the object
cannot be accessed before it has a handle.
2009-01-28 18:43:06 +01:00
Alexandre Julliard 5811a2ccb4 gdi32: Use the official constants instead of the old Win9x magic numbers for GDI object types. 2009-01-28 16:20:56 +01:00
Michael Stefaniuc 667a1ed5be gdi32: Remove superfluous pointer casts. 2009-01-26 14:31:13 +01:00
Michael Stefaniuc 2d94915f27 gdi32: Don't cast the void pointer returned by GDI_GetObjPtr(). 2008-10-24 14:24:59 +02:00
Dmitry Timoshkov ccba8578f5 gdi32: Add EMR_GDICOMMENT to the list of records producing output.
This completely fixes the print previews generated by MS Access in a Win9x
mode. Access has a custom handler for an EMR_GDICOMMENT record, and GDI APIs
it calls from it don't work properly due to wrong DC mapping.
2008-10-23 15:15:41 +02:00
Dmitry Timoshkov d1fe894a7d gdi32: Make EnumEnhMetaFile update the DC state before calling the callback.
This makes applications with custom callbacks work properly, and fixes
'make test' in a win9x mode.
2008-10-22 13:54:53 +02:00
Huw Davies 82c7ff811e gdi32: Initialize the handle table.
Fixes Valgrind warning: 'Conditional jump or move depends on
uninitialised value(s)' in metafile test.
2008-06-18 16:15:23 +02:00
Dmitry Timoshkov 02a15500fb gdi32: Make generated EMFs fully match Windows ones. 2008-05-27 12:05:37 +02:00
Alexandre Julliard 93cbb7a5db gdi32: Perform coordinate transformations using doubles instead of floats to avoid precision loss. 2008-05-22 17:43:01 +02:00
Dmitry Timoshkov 5c15cf5f12 gdi32: info->state.next is always NULL, there is no need to save/restore it. 2008-04-29 12:46:35 +02:00
Dmitry Timoshkov c871d9a81d gdi32: Save/restore internal EMF playing state on EMR_SAVEDC/EMR_RESTOREDC, add a test for this. 2008-04-28 13:27:52 +02:00
Dmitry Timoshkov 5201c78b2e gdi32: Add a test for EMR_EXTSELECTCLIPRGN, make it pass under Wine. 2008-04-21 16:59:03 +02:00
Austin English cb2274e690 Spelling fixes. 2008-04-04 11:51:40 +02:00
Gerald Pfeifer 43837ed227 gdi32: Tighten range checking in PlayEnhMetaFileRecord() and remove four useless checks. 2008-01-09 13:38:03 +01:00
Andrew Talbot d0d4c74e85 gdi32: Remove unneeded casts. 2008-01-07 12:18:50 +01:00