From 167ee26fa180ba6341d002a2e1a372881cfe3efc Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Sun, 9 Jan 2022 20:40:36 +0100 Subject: [PATCH] Documentation update. --- CHANGELOG.md | 18 +++++++----------- CONTRIBUTING.md | 7 ++++--- CREDITS.md | 3 +++ INSTALL-DEV.md | 4 +++- THEMES-DEV.md | 28 +++++++++++++++++++++++++++- licenses/rlottie | 17 +++++++++++++++++ 6 files changed, 61 insertions(+), 16 deletions(-) create mode 100644 licenses/rlottie diff --git a/CHANGELOG.md b/CHANGELOG.md index ef1cf9d3f..51b7a8a08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,26 +10,22 @@ ### Detailed list of changes +* Added support for Lottie animations (vector graphics), fully configurable as a theme extra * Added scraper support for displaying the returned platform if it does not match the game platform, or if multiple platforms are defined for the system * Set the option "Scrape actual folders" as enabled by default and moved it higher up in the scraper options menu -* On Windows, moved all dependencies in-tree to the "external" directory to greatly simplify the build environment +* Added a color model conversion shader for converting from BGRA to RGBA +* Added renderer support for supplying a separate format than internalFormat when creating textures (although not really supported by the OpenGL standard) +* Added the rlottie library as a Git subtree +* On Windows all dependencies were moved in-tree to the "external" directory to greatly simplify the build environment +* Large refactoring to improve thread safety and improve singleton pattern usage * Removed the deprecated VideoVlcComponent ### Bug fixes +* During some menu operations that reloaded the gamelist view, the cached background would sometimes miss some elements as they were not rendered in time * The ScummVM platform entry was missing for TheGamesDB which resulted in very inaccurate scraper searches * During multi-scraping the busy indicator was not displayed after a result was acquired but before the thumbnail was completely downloaded -## Version 1.2.1 (in development) - -**Release date:** TBD - -### Release overview - -### Detailed list of changes - -### Bug fixes - ## Version 1.2.0 **Release date:** 2021-12-28 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ba6b50413..bbcd51d94 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -68,21 +68,21 @@ The roadmap is under constant review so expect it to change from time to time. S #### v1.4 * Bulk metadata editor -* Localization/multi-language support +* Animated menu elements like switches, tick boxes, smooth scrolling etc. * Authoring tools to clean up orphaned gamelist entries, media files etc. * Add scraping of game manuals and maps and create a viewer for these (with PDF, GIF, JPG and PNG support) * Scrollbar component for the gamelist view which can be used by the themes * Web proxy support for the scraper * RetroAchievements.org integration * Add "time played" counter per game, similar to how it works in Steam -* Improve multi-threading #### v1.5 * Reorganize the menus, possibly adding basic/advanced modes +* Localization/multi-language support * Simple file browsing component +* New texture/cache manager with support for SVG images and Lottie animations * Improve the performance of the GLSL shader code -* Animated menu elements like switches, tick boxes, smooth scrolling etc. * Support for additional scraper services (if feasible?) * Support for portrait orientation, e.g. for Tate Mode arcade cabinets * Replacements for the abandoned NanoSVG and FreeImage libraries @@ -93,6 +93,7 @@ The roadmap is under constant review so expect it to change from time to time. S * Dependency on MoltenVK to get Metal support on macOS * Decommission of the OpenGL 2.1 and OpenGL ES renderers (or keep as legacy mode/legacy build?) * Better and more accurate GPU and memory usage statistics overlay +* Improve multi-threading #### v2.1 diff --git a/CREDITS.md b/CREDITS.md index 08f2cd8bb..ecdbb0203 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -54,6 +54,9 @@ https://pugixml.org RapdidJSON \ https://rapidjson.org +rlottie \ +https://github.com/Samsung/rlottie + SDL \ https://www.libsdl.org diff --git a/INSTALL-DEV.md b/INSTALL-DEV.md index 09367d8e5..36515c7d0 100644 --- a/INSTALL-DEV.md +++ b/INSTALL-DEV.md @@ -764,6 +764,8 @@ cmake -G "NMake Makefiles" . nmake ``` +For some annoying reason MSVC is the only compiler that creates a debug build by default and where you need to explicitly set the build type to Release. + To enable AddressSanitizer which helps with identifying memory issues like corruption bugs and buffer overflows, build with the ASAN option: ``` cmake -G "NMake Makefiles" -DASAN=on . @@ -772,7 +774,7 @@ nmake ThreadSanitizer and UndefinedBehaviorSanitizer aren't available for the MSVC compiler. -For some annoying reason MSVC is the only compiler that creates a debug build by default and where you need to explicitly set the build type to Release. +There are a number of compiler warnings for the bundled rlottie library when building with MSVC. Unfortunately these need to be resolved upstream, but everything should still work fine so the warnings can be ignored for now. Unfortunately nmake does not support parallel compiles so it's very slow. There are third party solutions to get multi-core building working with MSVC, but I've not investigated this in depth. diff --git a/THEMES-DEV.md b/THEMES-DEV.md index 307a50949..6bfc9d4e8 100644 --- a/THEMES-DEV.md +++ b/THEMES-DEV.md @@ -658,6 +658,32 @@ Can be created as an extra. * `zIndex` - type: FLOAT. - z-index value for component. Components will be rendered in order of z-index value from low to high. +#### animation + +Lottie (vector graphics) animation. Can be created as an extra. + +* `pos` - type: NORMALIZED_PAIR. +* `size` - type: NORMALIZED_PAIR. + - If only one axis is specified (and the other is zero), the other will be automatically calculated in accordance with the animation's aspect ratio. Note that this is sometimes not entirely accurate as some animations contain invalid size information. +* `origin` - type: NORMALIZED_PAIR. + - Where on the animation `pos` refers to. For example, an origin of `0.5 0.5` and a `pos` of `0.5 0.5` would place the animation exactly in the middle of the screen. If the "POSITION" and "SIZE" attributes are themeable, "ORIGIN" is implied. +* `rotation` - type: FLOAT. + - angle in degrees that the animation should be rotated. Positive values will rotate clockwise, negative values will rotate counterclockwise. Default is `0`. +* `rotationOrigin` - type: NORMALIZED_PAIR. + - Point around which the animation will be rotated. Default is `0.5 0.5`. +* `path` - type: PATH. + - Path to the animation file. Only the .json extension is supported. +* `speed` - type: FLOAT. + - The relative speed at which to play the animation. Minimum value is `0.2`, maximum value is `3.0`. Default is `1.0`. +* `direction` - type: STRING. + - The direction that the animation should be played. Valid values are `normal` (forwards), `reverse` (backwards), `alternate` (bouncing forwards/backwards) and `alternateReverse` (bouncing forwards/backwards but starting with playing backwards). Default is `normal`. +* `keepAspectRatio` - type: BOOLEAN. + - If true, aspect ratio will be preserved. If false, animation will stretch to the defined size. Note that this is incompatible with only defining one of the axes for the `size` element. Default is `true`. +* `visible` - type: BOOLEAN. + - If true, component will be rendered, otherwise rendering will be skipped. Can be used to hide elements from a particular view. Default is `true`. +* `zIndex` - type: FLOAT. + - z-index value for component. Components will be rendered in order of z-index value from low to high. Default is `10`. + #### imagegrid * `pos` - type: NORMALIZED_PAIR. @@ -928,7 +954,7 @@ It's strongly recommended to use the same image dimensions for all badges as var - Possible combinations: - `w h` - Dimensions of the badges container. The badges will be scaled to fit within these dimensions. Minimum value per axis is `0.03`, maximum value is `1.0`. Default is `0.15 0.20`. * `origin` - type: NORMALIZED_PAIR. - - Where on the component `pos` refers to. For example, an origin of `0.5 0.5` and a `pos` of `0.5 0.5` would place the component exactly in the middle of the screen. If the "POSITION" and "SIZE" attributes are themeable, "ORIGIN" is implied. Default is `0 0`. + - Where on the component `pos` refers to. For example, an origin of `0.5 0.5` and a `pos` of `0.5 0.5` would place the component exactly in the middle of the screen. If the "POSITION" and "SIZE" attributes are themeable, "ORIGIN" is implied. Default is `0.5 0.5`. * `rotation` - type: FLOAT. - angle in degrees that the image should be rotated. Positive values will rotate clockwise, negative values will rotate counterclockwise. Default is `0`. * `rotationOrigin` - type: NORMALIZED_PAIR. diff --git a/licenses/rlottie b/licenses/rlottie new file mode 100644 index 000000000..e0825e7f8 --- /dev/null +++ b/licenses/rlottie @@ -0,0 +1,17 @@ +Licensing + +rlottie basically comes with MIT license(licenses/COPYING.MIT) +but some parts of shared code are covered by different licenses. Listed +below are the folder names and the license file covering it. Note that this +license would cover all of the source invovled in each folders, unless +specifically noted otherwise. So please refer to these imported project sources +for details. + +Dependencies and licenses: + +src/vector/ licenses/COPYING.MIT, COPYING.SKIA +src/vector/freetype licenses/COPYING.FTL +src/vector/pixman licenses/COPYING.PIX +src/vector/stb licenses/COPYING.STB +src/lottie/rapidjson licenses/COPYING.RPD +