Commit Graph

340 Commits

Author SHA1 Message Date
Florian Will 6090276b3e gdiplus: Disable PNG encoding filters.
This speeds up the encoding process, sometimes at the cost of increased
PNG file sizes. PNGs created using gdiplus on Windows 10 have filters
disabled, too, according to pngcheck.

The application "ZusiDisplay" encodes finished frames in PNG format and
sends them through a named pipe for "Zusi 3" to use as an in-game
texture, so performance matters for that use case to improve "embedded
display" FPS.

Signed-off-by: Florian Will <florian.will@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-25 09:25:40 +01:00
Bernhard Kölbl ec29292141 gdiplus: Introduce dst palette parameter to convert_pixels().
Make it possible to define a destination colour palette when
using convert_pixels(), so converting a bitmap from a non
indexed format to an indexed format does not produce an empty image.

Signed-off-by: Bernhard Kölbl <besentv@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-29 23:25:46 +01:00
Bernhard Kölbl 77121b3b23 gdiplus: Add pixel conversions to 4bpp indexed.
Signed-off-by: Bernhard Kölbl <besentv@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-19 20:56:26 +01:00
Jacek Caban 883298f627 gdiplus: Use nameless unions.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 09:24:46 +02:00
Nikolay Sivov b733e39ae5 gdiplus: Add a helper to check for metafile graphics context.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 18:52:58 +01:00
Ziqing Hui f40f379f05 gdiplus: Correctly handle UnitDisplay for printer DC.
For printer DC, UnitDisplay specifies that a unit is 1/100 inch,
which is different from display DC.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=17848
Signed-off-by: Ziqing Hui <zhui@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-22 10:42:14 +01:00
Michael Stefaniuc 60c1035137 gdiplus: Use wide-char string literals.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-13 11:28:44 +01:00
Jacek Caban cca639fa64 gdiplus: Introduce absdiff helper.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-01 22:10:28 +02:00
Vincent Povirk 8b9cff6e70 gdiplus: Return an error retrieving the palette for a metafile.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-15 14:08:51 +02:00
Vincent Povirk ed2d0df4f7 gdiplus: Don't set a palette when loading non-indexed images.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-15 14:08:51 +02:00
Jeff Smith 252a53825a gdiplus: Include palette when writing PNG indexed formats.
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-29 19:50:43 +02:00
Florian Will a7fc06f62c gdiplus: Implement GdipSaveAddImage() and GdipSaveAdd().
Signed-off-by: Florian Will <florian.will@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:26:53 +01:00
Florian Will 483aaf3308 gdiplus: Add GdipSaveAddImage() stub.
Also update the GdipSaveAdd() stub to return NotImplemented instead of
silently failing.

Signed-off-by: Florian Will <florian.will@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:01:15 +01:00
Florian Will b31fc78812 gdiplus: Refactor to split up encode_image_wic().
New functions initialize_encoder_wic(), encode_frame_wic() and
terminate_encoder_wic() are useful for implementing GdipSaveAdd() and
GdipSaveAddImage() later.

The WIC encoder is now stored in the new GpImage "encoder" field instead
of a local variable. This makes it possible to keep the encoder active
between multiple gdiplus API calls, which is also useful for
GdipSaveAdd() and GdipSaveAddImage().

Signed-off-by: Florian Will <florian.will@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:01:05 +01:00
Jeff Smith ddd88fe2f4 gdiplus: Round up when converting from 32-bit ARGB to PARGB.
Applies fix from d23bfd8dfc to
setpixel_32bppPARGB.

Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-11 19:47:33 +01:00
Jeff Smith 06bf4283fb gdiplus: Fix calculation for 32-bit PARGB to ARGB conversion.
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-11 19:47:25 +01:00
Dmitry Timoshkov 506f3bf53d gdiplus: Reimplement GdipCreateBitmapFromGdiDib by using GdipCreateBitmapFromHBITMAP.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-27 18:27:14 +01:00
Dmitry Timoshkov 619ef41f33 gdiplus: GdipCreateBitmapFromHBITMAP should use palette from the GDI bitmap.
This patch fixes painting bitmaps with bpp <= 8.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-27 18:27:07 +01:00
Alistair Leslie-Hughes 14adcc694d gdiplus: Check status as well before using bitmap.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-13 19:41:03 +01:00
Dmitry Timoshkov cbc486aca1 gdiplus: Implement GdipInitializePalette.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:13:18 +01:00
Sven Baars 85630593b8 gdiplus: Fix a memory leak on error path (Valgrind).
Signed-off-by: Sven Baars <sven.wine@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-25 10:29:00 +01:00
Akihiro Sagawa 0e082c0416 gdiplus: Add 4bppIndexed to the list of supported formats.
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-08 18:55:58 +01:00
Akihiro Sagawa 748a246a8d gdiplus: Convert to 32bppARGB when PNG image with transparency chunk is loaded. (rebased).
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=44409
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-08 18:55:42 +01:00
Alistair Leslie-Hughes cf3362afb1 gdiplus: Display the GUID of the image type in GdipSaveImageToStream.
Based on a patch by Dmitry Timoshkov.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-24 19:12:03 +02:00
Dmitry Timoshkov cc119b9464 gdiplus: Pass the correct GUID to encode_image_wic for GIF images.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-24 19:12:03 +02:00
Nikolay Sivov 8463159344 gdiplus: Use ARRAY_SIZE() macro.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-14 23:51:27 +02:00
Louis Lenders 1ac02c2385 gdiplus: Fix argument check in GdipLoadImageFromStream().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-28 19:39:28 +01:00
Nikolay Sivov 825f393299 gdiplus/metafile: Implement EmfPlusRecordTypeObject for image attributes object.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-10-12 19:40:48 +02:00
Dmitry Timoshkov 8c593bd37a gdiplus: Set correct color space flags for grayscale images.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-29 15:51:27 +02:00
Dmitry Timoshkov 5870431ad9 gdiplus: Force conversion of 8 bpp grayscale PNG images to 32 bpp BGRA.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-25 08:06:35 +02:00
Piotr Caban e1e4dd2023 gdiplus: Add partial support for GdipDrawImagePointsRect on metafile.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-07-10 20:51:11 +02:00
Piotr Caban 1a75f763db gdiplus: Remove unused clsid parameter from encode_image_func helpers.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-07-10 20:51:11 +02:00
Sebastian Lackner a4b7fe6a92 gdiplus: Initialize containers list in GdipCloneImage.
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>
2017-06-19 09:46:47 +02:00
Piotr Caban b58276af4d gdiplus: Reimplement GdipCreateHBITMAPFromBitmap so it can work on locked bitmaps.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-16 08:30:47 +01:00
Piotr Caban 5673d82b8e gdiplus: GpBitmap can be only locked once, get rid of numlocks field.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-16 08:30:46 +01:00
Piotr Caban 0eaaa15144 gdiplus: Make GpBitmap->bitmapbits access thread safe.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-16 08:30:40 +01:00
Nikolay Sivov da2021e46f gdiplus: Return success from GdipImageSetAbort().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-11-04 18:42:39 +01:00
Nikolay Sivov 509ba80bcb gdiplus: Implement GdipBitmapGetHistogram().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-11-03 11:43:02 +01:00
Nikolay Sivov 8de0275e48 resend patch 1/2: Gdiplus: Implement GdipBitmapGetHistogramSize.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-11-03 11:42:50 +01: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 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
Nikolay Sivov 2de908f3ff gdiplus: Remove some casts.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-05 14:50:30 -05:00
Vincent Povirk bf4a2ba264 gdiplus: Add support for reading png cHRM chunks.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-17 00:09:19 +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
Gerald Pfeifer 8f5b50d46b gdiplus: Avoid shift overflow in get_gif_background_color.
Signed-off-by: Gerald Pfeifer <gerald@pfeifer.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-29 21:20:06 +09:00
Sebastian Lackner ffa467691d gdiplus: Use helper function for remaining HeapFree calls.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-29 10:49:20 +09:00
Sebastian Lackner ff1b209be8 gdiplus: Use helper function for HeapAlloc calls.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-29 10:49:14 +09:00
Sebastian Lackner 2fdccc247e gdiplus: Use the correct memory allocation function for PropVariants.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-28 12:45:00 +09:00
Nikolay Sivov c820139b0f gdiplus: Added GdipBitmapConvertFormat stub.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-28 00:58:13 +09:00
Alistair Leslie-Hughes e5d478c799 gdiplus: Add GdipCreateEffect stub.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-11 13:44:55 +09:00