Peter Nelson and GitHub
1e6153e875
Fix #14891 , a8650c6b06: Minimum sprite zoomlevel could break in some cases. ( #14894 )
...
Caused by sprite control flags not being reset when scanning available sprites.
2025-12-10 08:17:24 +00:00
Cyprian Klimaszewski and GitHub
99f04f27de
Doc: Update information for receiving a copy of GPL. ( #14869 )
2025-12-07 11:25:08 +00:00
Peter Nelson and GitHub
5ee186e850
Codefix: Possible use of uninitialised variable. ( #14494 )
...
Realistically this can't happen but gcc 12.2 warns.
2025-08-03 10:48:26 +00:00
Peter Nelson and GitHub
a8650c6b06
Codechange: Make SpriteCacheCtrlFlags an enum bit set. ( #14462 )
...
Due to header dependencies, this requires types to split from the spritecache header.
2025-07-19 23:49:15 +01:00
Peter Nelson and GitHub
d2ee2add28
Codechange: Remove ZOOM_LVL_GUI macro. ( #14423 )
2025-07-09 11:05:06 +01:00
Peter Nelson and GitHub
77b572619a
Codechange: Make use of ZoomLevels range iteration. ( #14422 )
2025-07-08 14:00:12 +01:00
Peter Nelson and Peter Nelson
7744f49a9e
Change: Simplify sprite cache memory management
...
* Remove custom allocator
* Use std::unique_ptr for sprite data
* Perform LRU cache eviction in a single pass
2025-06-23 21:22:37 +01:00
Peter Nelson and GitHub
2e78c24ba3
Codefix: Use bitset .None() or .Any() instead of comparing against an empty bitset. ( #14327 )
2025-06-04 07:31:44 +01:00
Peter Nelson and Peter Nelson
5585363407
Codechange: Use std::byte for glyph sprite buffer.
2025-05-13 14:51:17 +01:00
Rubidium and rubidium42
568b70e556
Codechange: replace memmove with std::move(_backwards)
2025-05-11 21:51:57 +02:00
Rubidium and rubidium42
7981fcb297
Codechange: use std::fill_n over memset
2025-05-09 17:20:41 +02:00
Rubidium and rubidium42
4c1cd4fe4c
Codefix: remove unused mem_func includes
2025-05-06 20:03:35 +02:00
frosch and frosch
8571af9833
Codechange: Turn ZoomLevel into enum class.
2025-05-03 23:21:09 +02:00
frosch and frosch
c0d4ab69d0
Codechange: Add a container to index data by zoom level.
2025-05-03 23:21:09 +02:00
frosch and frosch
7055ea0aee
Codechange: Define sequential operators for ZoomLevel.
2025-05-03 23:21:09 +02:00
frosch and frosch
bbfda39ac3
Codechange: Add ZoomLevels bit set.
2025-05-03 23:21:09 +02:00
frosch and frosch
518a34c286
Codechange: Use std::byte for generic buffers.
2025-05-03 18:43:20 +02:00
frosch and frosch
02082a0211
Codechange: Deduplicate array lookup.
2025-05-03 18:43:20 +02:00
frosch and frosch
bb767608de
Codechange: Pass SpriteType as direct parameter to SpriteEncoder::Encoder.
2025-05-03 18:43:20 +02:00
Rubidium and rubidium42
855377191e
Codechange: replace some more char*s with std::string_view
2025-04-30 23:49:06 +02:00
Rubidium and rubidium42
c9624cef7c
Codechange: remove MallocT, CallocT and ReallocT
2025-03-04 00:10:01 +01:00
Rubidium and rubidium42
15dcf56dad
Codechange: remove ZeroedMemoryAllocator
2025-02-28 20:12:44 +01:00
Rubidium and rubidium42
23ba18ada7
Codechange: remove SimpleSpriteAllocator
2025-02-23 14:44:11 +01:00
Rubidium and rubidium42
576a96c685
Codechange: let the ReusableBuffer use std::vector as storage
2025-02-16 19:31:13 +01:00
Peter Nelson and GitHub
2d7d085e8e
Codechange: Use EncodedString for error messages. ( #13569 )
2025-02-16 10:04:32 +00:00
Peter Nelson and GitHub
ba20ea5d18
Codechange: Use EnumBitSet for SpriteComponent. ( #13509 )
2025-02-09 18:37:01 +00:00
Rubidium and rubidium42
40ab4e306b
Codechange: use std::vector to store SpriteCache instances in
2025-01-26 18:00:07 +01:00
Peter Nelson and Peter Nelson
7b091000b0
Feature: Support converting 32bpp-only sprites to indexed 8bpp.
...
This uses nearest colour lookup to convert 32bpp-only sprites to indexed 8bpp on the fly. This provides a reasonable usable sprite instead of being incompatible.
2025-01-21 00:45:31 +00:00
Peter Nelson and Peter Nelson
83e9ee00f0
Change: Let sprite loader know what sprites are available in both 8bpp and 32bpp depths.
2025-01-21 00:45:31 +00:00
Peter Nelson and GitHub
b890dab2b4
Change: Treat recolour sprites as regular sprites in the SpriteCache. ( #13107 )
...
Recolour sprites are loaded when seen, instead of being loaded when needed. This could result in the sprite cache being filled up with recolour sprites, and also mean that replacing recolour sprites didn't release the previously allocated memory.
Instead, allow recolour sprites to be loaded as needed and freed when unneeded, like regular sprites.
2024-11-23 12:14:46 +00:00
Peter Nelson and GitHub
e076aaf740
Codefix: Use SpriteID when passing sprite IDs. ( #13037 )
2024-10-27 18:54:49 +00:00
Peter Nelson and GitHub
e1697a6ad1
Codechange: Don't use enums for non-enumerated values. ( #13031 )
...
In the past we have used enums to hold an arbitrary values. These values
are not enumerated types, so make them constants instead.
2024-10-27 18:02:49 +00:00
29ff3d7b90
Fix: DupSprite did not copy the control_flags field ( #12906 )
...
Co-authored-by: Jonathan G Rennison <j.g.rennison@gmail.com >
2024-09-07 14:57:44 +01:00
Peter Nelson and Peter Nelson
9a037fe5ae
Codechange: Replace malloc/free with vector when padding sprites.
2024-08-20 22:15:30 +01:00
Peter Nelson and Peter Nelson
48539992e8
Codechange: Use std::unordered_map for storing TrueTypeFontCache's GlyphEntry.
2024-05-30 20:16:28 +01:00
Peter Nelson and Peter Nelson
7b717fcccb
Codechange: Replace AllocatorProc with SpriteAllocator class.
...
This allows for state to be passed to or maintained by the allocator.
2024-05-30 20:16:28 +01:00
Peter Nelson and GitHub
34ba969c74
Change: Display more useful information in sprite aligner than sprite ID. ( #12439 )
...
Sprite IDs are not useful information given they change don't refer to anything outside the loaded game.
Instead, include the filename and nfo line at minimum, and include action A or action 5 sprite replacement information if applicable.
2024-04-06 21:16:02 +01:00
Peter Nelson and Peter Nelson
7572cfd103
Codechange: Redefine ZOOM_LVL so that ZOOM_LVL_NORMAL is 1x zoom.
...
This matches expectations of what normal zoom means.
2024-04-04 22:27:03 +01:00
Peter Nelson and Peter Nelson
3c94e81665
Codechange: Use ZOOM_LVL_MIN to refer to first zoom level.
...
Many uses of ZOOM_LVL_NORMAL actually just want the first zoom level slot, so use ZOOM_LVL_MIN to make this clearer.
2024-04-04 22:27:03 +01:00
Patric Stout and GitHub
a3cfd23cf9
Codechange: rename byte to uint8_t ( #12308 )
2024-03-16 23:59:32 +01:00
frosch and frosch
b1718478c8
Codechange: Replace old non-standard attributes with C++17/20 standard attributes.
2024-02-02 22:29:28 +01:00
Rubidium and rubidium42
6b21368bc2
Codechange: replace FIND_FIRST_BIT/FindFirstBit2x64 with FindFirstBit
2024-01-19 21:10:39 +01:00
Peter Nelson and GitHub
fdf6cbf848
Change: Scale sprites to requested highest resolution level. ( #11600 )
...
Sprites from graphics sets which only provide high resolution sprites are now scaled up from scaled down versions.
2023-12-25 20:08:13 +00:00
Peter Nelson and GitHub
b85ecf9ac2
Codechange: Replace pointer to Sprite array with reference to SpriteCollection. ( #11580 )
...
Add `SpriteLoader::SpriteCollection` type which is an array of `SpriteLoad::Sprite`.
This removes the ambiguity of what `SpriteLoader::Sprite *` is pointing to,
and cleans up mismatches using both dereference -> and array access [] for the
same object.
2023-12-20 20:38:21 +00:00
rubidium42 and rubidium42
cb8612ba79
Remove: ZOOM_LVL_COUNT
...
This is the only enumeration with a COUNT and END. The logic of the COUNT
implied that BEGIN could be non-zero, but all but two uses of zoom level
assume that BEGIN is zero, making the separate count only confusing.
2023-11-29 21:12:28 -04:00
Peter Nelson and Peter Nelson
d4008850e3
Codechange: Ensure function opening { is on new line.
2023-11-09 20:15:38 +00:00
Peter Nelson and Peter Nelson
1c94fb0389
Add: Mock sprite cache intialization.
...
This fills up the sprite cache with SPR_OPENTTD_BASE + OPENTTD_SPRITE_COUNT zero-size sprites, to
allow GetSpriteSize() calls to continue from unit-tests.
2023-11-05 19:24:59 +00:00
Peter Nelson and Peter Nelson
05436d9c2f
Add: Expose minimal parts of SpriteCache internals.
...
These parts are needed to be able to mock the SpriteCache for unit-tests.
2023-11-05 19:24:59 +00:00
Peter Nelson and GitHub
fd6f1e844a
Codechange: Avoid emplace_back(new()) into a unique_ptr. ( #11384 )
...
This could theoretically leave an unmanaged pointer in certain circumstances, and directly using
make_unique shows intent.
2023-10-20 18:40:48 +01:00
Rubidium and rubidium42
eaae0bb5e7
Codechange: automatic adding of _t to (u)int types, and WChar to char32_t
...
for i in `find src -type f|grep -v 3rdparty/fmt|grep -v 3rdparty/catch2|grep -v 3rdparty/opengl|grep -v stdafx.h`; do sed 's/uint16& /uint16 \&/g;s/int8\([ >*),;[]\)/int8_t\1/g;s/int16\([ >*),;[]\)/int16_t\1/g;s/int32\([ >*),;[]\)/int32_t\1/g;s/int64\([ >*),;[]\)/int64_t\1/g;s/ uint32(/ uint32_t(/g;s/_uint8_t/_uint8/;s/Uint8_t/Uint8/;s/ft_int64_t/ft_int64/g;s/uint64$/uint64_t/;s/WChar/char32_t/g;s/char32_t char32_t/char32_t WChar/' -i $i; done
2023-07-19 19:30:14 +02:00