summaryrefslogtreecommitdiffstats
path: root/minui/resources.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* minui: Add support for ARGB (LSB alpha)Patrik Torstensson2021-12-061-16/+40
| | | | | | | | | | - Called RGBA to follow convention in minui where big-endian description of format is used and to avoid conflict with existing ARGB - Handle alpha being LSB in png and text rendering Change-Id: I0d9afef55aad05028ed0b8b4204f1d52aaa683c3 (cherry picked from commit cd1c327427febe7cf76e6fa4835847f0d4f398e3)
* minui: fix mem leakage issuelijiazi2020-12-231-1/+1
| | | | | | | | | | | Use free to release GRSurface object will not call data_'s DataDeleter, then the buf data_ points to will leakage. Use delete release GRSurface object. Test: manual Change-Id: I53a9ea5a4ad67de1662c707a5ea59d738bd9c2d8 Signed-off-by: lijiazi <lijiazi@xiaomi.com>
* minui: add ARGB_8888 formatAdrian Salido2019-12-131-3/+3
| | | | | | | | | | | | | | | | | | | | Minui currently really only supports composing in 2 different formats (see gr_color()) with ALPHA always as MSB. However, some devices interpret PixelFormat as either Big Endian (i.e. ARGB has alpha at MSB) or Little Endian (i.e. BGRA has alpha at MSB). This change attempts to give multiple options to specify the same format depending on device interpretation, while keeping just 2 different composition formats supported by minui. * ARGB + BGRA: Pixels have (A)lpha at MSB and (B)lue at LSB * RGBX + ABGR: Pixels have (A)lpha at MSB and (R)ed at LSB With this in mind, limiting the use of png_set_bgr() to happen only for (ARGB/BGRA) combination while leaving (RGBX/ABGR) unchanged. Bug: 143480444 Test: Boot device with TARGET_RECOVERY_PIXEL_FORMAT := <<all>> Change-Id: Ia0f94ccbc564b8def7c9416483712ff1abbbf49a
* matches_locale no longer accept empty locales in the png filexunchang2019-04-231-0/+4
| | | | | | | | | | | | | | | | | The legacy png files have an empty line in the end. And the recovery used to match any missing locale, e.g. "he" with that line and gets an empty image. Since the empty image is barely useful, we should just error out and fall back to the default locale. This reversed the unit test check added in d17a6885253da909e376ba5ca5084f5281f3557c Bug: 128934634 Test: run locale test with "he" and legacy images, recovery reports error and doesn't crash even without default locale fall back Change-Id: Ibdb7dd0b42348de5e392c834cce67ff02be85c24
* Fall back to en-US if localized bitmap is missing for a localexunchang2019-04-221-4/+10
| | | | | | | | | | | We used to show the image for the last locale or an empty image, if the localized image is missing for a specific locale. As the default english one is more meaningful to users, we should just error out and fall back to use the default locale when the image loading fails. Bug: 128934634 Test: run graphic test, locale test Change-Id: Iafd3e8466aec63b4952d1959b2a3d37e358677d4
* minui: GRSurface::Create() computes data_size on its own.Tao Bao2018-11-271-10/+12
| | | | | | | | | | | | | GRSurface::Create() doesn't need to rely on caller specifying the buffer size, as it can compute that info based on the given args. This CL also uses `size_t` for all the parameters in GRSurface::Create(). Test: Run recovery_unit_test on marlin. Test: Build and boot into blueline recovery. `Run graphics test`. Test: Build and boot into blueline charger mode. Change-Id: Idec9381079196abf13553a475006fefcfca10950
* minui: Fix a wrong arg in calling GRSurface::Create().Tao Bao2018-11-271-1/+1
| | | | | | | | | | | | | | | | | | This is a bug introduced while refactoring init_display_surface(), in [1]. As a result, user of res_create_multi_display_surface(), which is effectively `charger` right now, crashes due to buffer overrun. This CL fixes the wrong arg and adds a sanity test for res_create_multi_display_surface(). The testdata (battery_scale.png) is copied from system/core/healthd/images/battery_scale.png. [1] commit 44820ac1e31ffa029ab5baa71238a11b6db3e6cc. Bug: 119122296 Test: Run recovery_unit_test on marlin. Test: Build and boot into charger mode on blueline. Verify that `charger` no longer crashes. Change-Id: Ib6d083e1512a9c3c6eb63874d26d22658921d693
* minui: GRSurface manages data with std::unique_ptr.Tao Bao2018-11-071-10/+5
| | | | | | Test: Run recovery_unit_test on marlin. Test: `Run graphics test` on taimen. Change-Id: I34bd862049900b0030f2840a92a7fa3e02fa2c10
* minui: Add GRSurface::Clone().Tao Bao2018-11-011-2/+8
| | | | | | | Clone() allows duplicating the image that's stored in the GRSurface. Test: Run recovery_unit_test. Change-Id: Ia50d507c6200f2de5f17143775de805247a60e1f
* minui: Add a protected GRSurface ctor.Tao Bao2018-10-311-81/+56
| | | | | | | | | This prepares for the removal of the default and copy ctors, by making GRSurface::Create() as the only way to get GRSurface instances. Test: mmma -j bootable/recovery Test: Run recovery_unit_test on marlin. Change-Id: I0c34c3f3967e252deb020907c83acbac8a8f36b9
* minui: Move GRSurface into a class.Tao Bao2018-10-231-32/+38
| | | | | | | | | | | | | | | | | | | | | | This CL adds GRSurface::Create() and dtor for managing the allocated memory in GRSurface class. It also adds GRSurface::data() that hides the underlying implementation, with both of const and non-const overloads. This allows `const GRSurface&` to be more useful - previously it only ensured a const member variable of `data`, instead of a read-only buffer it points to. It also marks the parameters in gr_texticon() and gr_blit() as const, as they're incoming source that shouldn't be altered. It corrects the type of gr_draw, which is the sink to be painted on (an earlier attempt was made in [1], but didn't get the full picture correctly). [1] https://android-review.googlesource.com/c/platform/bootable/recovery/+/704757/ Test: mmma -j bootable/recovery Test: recovery_unit_test on marlin Test: Run graphics test on marlin (fbdev). Test: Run graphics test on blueline (drm). Change-Id: I7904df084cd6c08fa04a9da97d01b4b1a6e3a20c
* minui: Use runtime properties instead of build time vars.Tao Bao2018-08-021-9/+11
| | | | | | | | | | | | | | | This CL removes the use of the following build time macros, and uses the runtime property values instead. - TARGET_RECOVERY_PIXEL_FORMAT - TARGET_RECOVERY_OVERSCAN_PERCENT - TARGET_RECOVERY_DEFAULT_ROTATION Bug: 110380063 Test: Set up taimen with `TARGET_RECOVERY_DEFAULT_ROTATION := ROTATION_LEFT`. Build and check recovery UI. Test: Set up taimen with `TARGET_RECOVERY_PIXEL_FORMAT := ABGR_8888`. Build and check recovery UI. Change-Id: I4439556a03fde4805a18011ef72eff1373f31d47
* tests: Add tests for ScreenRecoveryUI.Tao Bao2018-05-091-2/+7
| | | | | | | | | | | | In order to support that, this CL adds Paths::set_resource_dir() to override the default resource dir ("/res/images/") that's only available under recovery. Note that since there're external modules depending on libminui, it adds a separate function of res_set_resource_dir(), instead of requiring the dependency on libotautil for everyone. Test: mmma -j bootable/recovery Test: Run recovery_unit_test on marlin. Change-Id: I0a7dcf4476808bea9e634eaffc9676f6cbaf92b7
* Expose PngHandler via resources.h.Tao Bao2018-04-141-58/+13
| | | | | | | | | | | | As a private header for testing purpose. PngHandler additionally loads a given filename if the one with '/res/images' prefix is not available. It also provides color_type/bit_depth that are parsed from the PNG file. This allows reusing the same code for the ResourcesTest (renamed from ResourceTest). Test: Run recovery_manual_test on marlin. Change-Id: I3f939d79a1cb1b83a899847dbe2d51bde15d16d8
* StartsWith allows a std::string prefix now.Elliott Hughes2017-12-201-1/+1
| | | | | | Bug: N/A Test: builds Change-Id: I5183ec8133f5dc9a81a438223c6d3d2ea11ef0ec
* Move the png open and destroy functions into a classTianjie Xu2017-09-291-286/+279
| | | | | | | | | | | | | | The open_png() function used to open the png file but didn't close it; and this caused the leak of fd. However, we cannot close the file inside open_png() because the png file needs to remain open until the outer function finishes parsing the file and destroys the png struct. This CL addresses this issue by implementing a PngReader class to handle the creation/destruction of the png struct. Bug: 67010912 Test: Run graphic tests; also run locale tests and check fd. Change-Id: I9a803b3cd8c16f16a9ffe8f0acc7fe0f42e95eb0
* Add a new option in recovery menu to test the background textsTianjie Xu2017-09-271-0/+35
| | | | | | | | | | | | Add a new option "Run locale test" to check the background text images (i.e. texts for "erasing", "error", "no_command" and "installing" with different locales.) Use volume up/down button to cycle through all the locales embedded in the png file, and power button to go back to recovery main menu. Test: Run locale test with bullhead. Change-Id: Ib16e119f372110cdb5e611ef497b0f9b9b418f51
* Fix the android-cloexec-* warnings in bootable/recoveryTianjie Xu2017-07-191-1/+1
| | | | | | | | Add the O_CLOEXEC or 'e' accordingly. Bug: 63510015 Test: recovery tests pass Change-Id: I7094bcc6af22c9687eb535116b2ca6a59178b303
* Add the missing sr-Latn into png files and rename the png locale headerTianjie Xu2017-03-251-10/+23
| | | | | | | | | | | Switch the locale header in the png files from Locale.toString() to Locale.toLanguageTag(). For example, en_US --> en-us and sr__#Latn --> sr-Latn. Also clean up recovery a bit to expect the new locale format. Bug: 35215015 Test: sr-Latn shows correctly under graphic tests && recovery tests pass Change-Id: Ic62bab7756cdc6e5f98f26076f7c2dd046f811db
* Merge "minui: Move callback functions to std::function."Tao Bao2017-01-251-8/+6
|\
| * minui: Move callback functions to std::function.Tao Bao2017-01-231-8/+6
| | | | | | | | | | | | | | Also make minor clean up to the header includes. Test: mmma bootable/recovery system/core/healthd system/extra/slideshow Change-Id: I3bfcf2c0e203c26a98ee08f1f8036c68356a69fd
* | Add checkers and tests for empty locale in PNG fileTianjie Xu2017-01-191-1/+3
|/ | | | | | | | | | | match_locale() will return false for empty locale string in the PNG file. Also add a manual test to validate if a PNG file is qualified to use under recovery. Bug: 34054052 Test: recovery_manual_test catches invalid PNG files successfully & Locale_test passed Change-Id: Id7e2136e1d8abf20da15825aa7901effbced8b03
* minui: Export minui/minui.h.Tao Bao2017-01-171-1/+1
| | | | | | | For libminui static and shared libraries. Test: build Change-Id: Ib30dc5e2ef4a3c8b3ca3a0cec68cb65e229a0c16
* Remove unnecessary uses of reinterpret_cast.Rahul Chaudhry2016-11-161-2/+2
| | | | | | | Discovered while looking at compiler warnings (b/26936282). Test: WITH_TIDY=1 WITH_STATIC_ANALYZER=1 mma Change-Id: I66f8f6026ed732a504504ade93ff196dc8b727ca
* Use static_cast to cast pointers returned by malloc/calloc/realloc/mmap.Rahul Chaudhry2016-11-161-4/+4
| | | | | | | | | | | static_cast is preferable to reinterpret_cast when casting from void* pointers returned by malloc/calloc/realloc/mmap calls. Discovered while looking at compiler warnings (b/26936282). Test: WITH_TIDY=1 WITH_STATIC_ANALYZER=1 mma Change-Id: Iaffd537784aa857108f6981fdfd82d0496eb5592 Merged-In: I151642d5a60c94f312d0611576ad0143c249ba3d
* Fix "ordered comparison between pointer and zero".MinSeong Kim2016-11-111-1/+1
| | | | | | | | | From Clang 4.x releases, DR583 and DR1512 will be addressed. This patch, in advance, fixes the error(s). Test: `mmma bootable/recovery` Change-Id: I29dc85ae681307c322ab3a698c3f3bbad1c784ee Signed-off-by: MinSeong Kim <minseong.kim@linaro.org>
* Merge "Fix matches_locale function" into nyc-devTianjie Xu2016-04-211-13/+8
|\ | | | | | | | | | | | | | | | | am: 8b86373 * commit '8b86373fd954276b18a6fba81afbe42c9caa49d3': Fix matches_locale function Change-Id: If7726c2f381ba0e4ab0519b77c167e75a9d46104
| * Fix matches_locale functionTianjie Xu2016-04-201-13/+8
| | | | | | | | | | | | | | | | | | matches_locale was expecting input locale string to have at most one underscore; as a result "zh_CN_#Hans" ignores "zh_CN" and matches into "zh". Fix the match function and add unit tests. Bug: 27837319 Change-Id: I4e8a66f91cae6ac2a46b6bf21f670d5ea564c7c8
* | Merge "Update the system update animation." into nyc-devElliott Hughes2016-04-151-2/+0
|\| | | | | | | | | | | | | | | | | am: e8d0ecc * commit 'e8d0ecccf7e54e73418cac94b0b136bfed94d51a': Update the system update animation. Change-Id: I5d0ad44b13a505bca62a5316447603fab4d280aa
| * Update the system update animation.Elliott Hughes2016-04-151-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Switch to a Wear-like intro/loop system. We don't have an intro yet, but hopefully this will let Wear delete more code when they move to N. Unlike them, we don't hard-code the number of frames: we just look to see what we have available. We do hard-code the fps though. Also add a graphics test mode so you can see a demo of the UI components without having to actually apply an OTA. Also fix a bug where default locale is null rather than en-US: it's more useful to show _some_ text if we don't have a locale (which should only be during development anyway). Bug: http://b/26548285 Change-Id: I63422e3fef3c41109f924d96fb5ded0b3ae7815d
* | Fix minui cleanup path on error.Elliott Hughes2016-02-191-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | bootable/recovery/minui/resources.cpp:321:21: warning: Branch condition evaluates to a garbage value if (surface[i]) free(surface[i]); ^~~~~~~~~~ bootable/recovery/minui/resources.cpp:424:13: warning: Value stored to 'len' during its initialization is never read int len = row[4]; ^~~ ~~~~~~ Bug: http://b/27264652 Change-Id: Icc1a914c59d6a89dab1b752b2cd2b40549566481
* | Fix some memory leaks.Yabin Cui2016-02-111-13/+9
|/ | | | | Bug: 26906328 Change-Id: Iebaf03db0cb3054f91715f8c849be6087d01b27b
* res: Embed FPS into icon_installing.png.Tao Bao2015-12-161-6/+15
| | | | | | | | | | | | | | We allow vendor-specific icon installing image but have defined private animation_fps that can't be overridden. This CL changes the image generator to optionally embed FPS (otherwise use the default value of 20) into the generated image. For wear devices, they are using individual images instead of the interlaced one. Change the animation_fps from private to protected so that it can be customized. Bug: 26009230 Change-Id: I9fbf64ec717029d4c54f72316f6cb079e8dbfb5e
* Don't use typedefs that hide *s.Elliott Hughes2015-04-151-19/+17
| | | | | | gr_surface was causing confusion for no good reason. Change-Id: If7120187f9a00dd16297877fc49352185a4d4ea6
* Switch minui over to C++.Elliott Hughes2015-04-101-0/+461
Change-Id: I59e08a304ae514a3fdb6fab58721f11670bc1b01