Thierry Crozat
facb6852b8
GRAPHICS: Fix incorrect assert in ManagedSurface::blitFromInner
...
When blitting from CLUT8 to another format, we need a palette
for the source surface.
2023-04-25 21:44:51 +01:00
Cameron Cawley
ee35a3d268
GRAPHICS: Use standard palettes in ManagedSurface
2023-03-24 21:32:48 +01:00
elasota
bf0b23021b
GRAPHICS: Fix VS signed/unsigned mismatch warning
2023-03-16 15:08:29 +01:00
Kaloyan Chehlarski
3b27bce87b
GRAPHICS: Fix transparency in ManagedSurface::blitFrom()
...
Added an explicit -1 argument for transColor in a call to transBlitFrom()
inside one of the overloads of blitFrom(). This fixes an issue where
calling blitFrom() with a Rect destination would result in the transparent
color being ignored.
2023-03-01 18:35:58 +02:00
Cameron Cawley
61a55bd415
GRAPHICS: Remove or deprecate RGBA palette functions in ManagedSurface
2023-02-08 00:09:39 +01:00
Cameron Cawley
8f85390b4c
GRAPHICS: Add hasPalette and grabPalette to ManagedSurface
2023-02-08 00:09:39 +01:00
Cameron Cawley
72c3be4418
GRAPHICS: Support blitting to and from RGB332 managed surfaces
2023-02-07 23:42:42 +01:00
Greg Kennedy
253a0519a7
GRAPHICS: Enable blitting 24bpp sources in managed_surface.cpp
...
Function `blitFromInner()` excludes source formats with 3 bytes per pixel. These are commonly returned from opaque full-color image decoders, like JPEG. This change enables blitting with these source images.
- Add `== 3` to the list of acceptable source formats
- Add READ_UINT24 handling for 3-byte source formats
- Add READ_UINT24 and RGBA conversion for 3-byte destination when blending (copying non-opaque source to 24bpp surface)
2022-11-13 06:46:35 +02:00
Thierry Crozat
d3da8a7367
GRAPHICS: Fix undefined behaviour in ManagedSurface blit on opaque target
...
The color components computation had intermediate results that could overflow
a signed int. So now the computation is done using unsigned int instead, which
prevents the overflow (since the max intermediate value is 255*255*257*257,
which fits in an unsigned int).
Note: I also considered adding an explicit cast to do the uint8 * uint8
operations using uint32, but decided not to as it is not required (there is no
overflow due to integer promotion) and makes the code more difficult to read.
2022-10-31 21:46:22 +00:00
Pragyansh Chaturvedi
e439beece7
GRAPHICS: Bump color parameter to uint32 type for functions using it
2022-09-09 02:21:47 +02:00
elasota
95fd7dcffc
GRAPHICS: Fix alpha blend on 16-bit targets treating the destination pixel as black
2022-06-13 20:14:36 +03:00
elasota
8c560fe94f
GRAPHICS: Fix redundant color loads
2022-06-13 15:09:08 +02:00
elasota
709175d835
GRAPHICS: Optimized managed surface blit in transparent/opaque pixel case
2022-06-13 15:09:08 +02:00
Cameron Cawley
085130c6da
GRAPHICS: Move ManagedSurface::clip() to the Surface class
2022-06-03 16:00:46 +01:00
Eugene Sandulenko
abea37c9bb
ALL: Update ScummVM project license to GPLv3+
2021-12-26 18:48:43 +01:00
Paul Gilbert
baccbedf50
GRAPHICS: Changed surface classes sizes from uint16 to int16
2021-07-04 18:24:27 -07:00
Mathias Parnaudeau
deefffd983
GRAPHICS: Fix leak in managed surface
...
In the case of the ManagedSurface constructor from a Surface object,
_disposeAfterUse is not initialized. But more, copyFrom() sets
_disposeAfterUse to YES after allocation of buffer. And then,
after the call to copyFrom, _disposeAfterUse was set to NO, what
made the pixels buffer not freed.
2021-05-12 14:10:26 +03:00
Eugene Sandulenko
364407a5c6
GRAPHICS: Properly initialize ManagedSurface copy constructor
2021-05-01 01:49:48 +02:00
Eugene Sandulenko
6217cf8a37
GRAPHICS: Added ManagedSurface constructor from Surface
2021-04-11 21:21:44 +02:00
Eugene Sandulenko
9894efd574
GRAPHICS: Added copyFrom(Surface) to ManagerSurface
2021-04-11 21:21:44 +02:00
Thierry Crozat
7ec6215547
GRAPHICS: Fix possible out of bound write for 1bpp blit in ManagedSurface
2021-03-16 23:46:50 +00:00
Thierry Crozat
4945526219
GRAPHICS: Fix 24bpp pixel formats handling in ManageSurface blitting
...
The code was only working for one specific case of 24bpp
pixel formats, and it is now generic. This fixes wrong
colors in the AGS savegame screenshots.
2021-03-13 03:28:22 +00:00
Vladimir Menshakov
91cbd8fc53
GRAPHICS: Fix crash in blitFromInner if destRect is empty
2021-03-06 20:57:27 +00:00
Thierry Crozat
f12813c630
GRAPHICS: Support having transparent ManagedSurface
2021-02-22 22:59:07 +00:00
Paul Gilbert
c53fb72922
GRAPHICS: Better 32-bit surface handling in ManagedSurface
...
Fixes several issues dealing with 32-bit surfaces, such as
- transBlitFrom between 32-bit surfaces
- 32-bit surfaces where the alpha channel is explicitly turned off
- Alpha blending when dest pixels are the transparent color
- Specifying colors to fill, line routines without alpha
2021-02-20 14:37:29 -08:00
Matthew Jimenez
c9696cb36c
GRAPHICS: Fix blending with default transColor on 32-bpp surfaces
2021-02-06 20:56:38 -06:00
Paul Gilbert
0589f9a817
GRAPHICS: Support 24-bit surfaces as dest for blitFrom
2021-02-06 16:37:31 -08:00
Paul Gilbert
81d891ebb0
GRAPHICS: ManagedSurface transBlitFrom ignore alpha matching transColor
2021-02-06 16:37:31 -08:00
Martin Gerhardy
b02ae40c9c
GRAPHICS: allow scaling for opaque surfaces
2021-01-17 21:54:11 +01:00
Eugene Sandulenko
b91cd981ef
GRPAHICS: Match new[] with proper delete[]
2020-07-27 12:15:11 +02:00
Cameron Cawley
80430b4756
GRAPHICS: Ensure that creating a ManagedSurface from another preserves the palette
2020-07-25 13:29:09 +02:00
Cameron Cawley
731596b5f7
GRAPHICS: Support converting between different palettes using ManagedSurface
2020-07-25 13:29:09 +02:00
Cameron Cawley
44e948a283
GRAPHICS: Support full alpha when blitting using masks in ManagedSurface
2020-07-25 13:29:09 +02:00
Paul Gilbert
bb405565b7
GRAPHICS: Fix memory overrun blitting from paletted surfaces
2020-05-08 18:45:34 -07:00
Eugene Sandulenko
81c443c973
GRAPHICS: Add sanity check
2020-04-27 13:57:35 +02:00
Eugene Sandulenko
915d4615ba
GRAPHICS: Added mask-driven transparency blitting to ManagedSurface
2020-04-24 00:51:24 +02:00
Paul Gilbert
4f1521f542
GRAPHICS: Fix setting ManagedSurface palette
2020-03-22 20:29:37 -07:00
Paul Gilbert
3a0c62e1e4
GRAPHICS: Make copying sources as const
2020-02-01 13:13:51 -08:00
Paul Gilbert
46e49e3ed3
GRAPHICS: Add transparent color field and palette to ManagedSurface
2020-02-01 13:13:51 -08:00
Eugene Sandulenko
3851c2d9a6
GRAPHICS: Added source transparency parameter to ManagedSurface::transBlit
2019-09-03 17:17:14 +02:00
Eugene Sandulenko
14f8e0574f
GRAPHICS: Fix Managed Surface alpha blending
2019-09-03 17:17:14 +02:00
SupSuper
1669ef6244
GRAPHICS: Fix ManagedSurface transBlitFrom ignoring flipped parameter
2019-07-14 00:46:30 +02:00
SupSuper
176109da59
GRAPHICS: Fix wrong rect size when blitting subsurface to ManagedSurface
...
We want the srcRect size and not the original surface size
2019-07-14 00:46:30 +02:00
Le Philousophe
ed34a41810
GRAPHICS: Fix rects handling in ManagedSurface::copyFrom
...
Like in create(), when using copyFrom the whole surface gets new data
and is now completely dirty so let's use markAllDirty.
2019-06-09 14:38:31 -07:00
Le Philousophe
1297ae2b76
GRAPHICS: Fix ManagedSurface::copyFrom memory handling
...
When calling ManagedSurface::copyFrom, _disposeAfterUse should be set to
YES because inner surface frees up old pixels array and creates a new one.
2019-06-09 14:38:31 -07:00
Paul Gilbert
4fbf11db90
GRAPHICS: Fix ManagedSurface clear calls when no surface is set
2017-12-03 13:10:41 -05:00
Paul Gilbert
1a25abbd73
GRAPHICS: Apply eriktorbjorn's fix for non-origin transBlitFrom calls
2017-02-21 20:41:35 -05:00
Paul Gilbert
a17109887c
GRAPHICS: Further fix compiler warnings for byte casts
2017-01-15 10:06:00 -05:00
Paul Gilbert
553f1c2ef4
GRAPHICS: Fix compiler warnings of double to byte casts
2017-01-15 09:32:55 -05:00
Paul Gilbert
4e06799122
GRAPHICS: Support varying bit depths in ManagedSurface transBlitFrom
2016-11-26 15:25:19 -05:00