Use cython fused types (templated functions) to remove redundancy from smp.pyx and smx.pyx #1370
Labels
assets
Involved with assets (images, sounds, ...)
good first issue
Simple thing, suitable for newcomers
improvement
Enhancement of an existing component
python
Done in Python code
Projects


Required skills: Cython
Difficulty: Medium
SMX is the graphics storage format in AoE2:DE. We export these files to PNG in the converter.
Because of the different storage formats and layers, the
process_drawing_cmdsfunction exists 3 times in smp.pyx, and 5 times in smx.pyx, both inopenage/convert/value_object/read/media/.We can use one generic function (one for
smp, one forsmx) that can handle all of the features at once.We can do that using templates in Cython, called "fused functions".
Here's an example how it works in principle.
rolffunction is saved two times - once forvariant_1and once forvariant_2. And it won't have anyifin its body then.if CompressionVariant islines behave likeif constexprinside a templated entity.We defined multiple variants of
process_drawing_cmdsto avoid a lot of branches (ifs) in the codepath, since this function is called more than a million times during the conversion process.You can test your changes with the singlefile media converter.
Further reading:
The text was updated successfully, but these errors were encountered: