Commit Graph

976 Commits

Author SHA1 Message Date
Josh Tynjala
62ab8eb6fc Font: fall back to using freetype's 2.9.1 algorithm for calculating font metrics like ascent/descent
This allows us to upgrade freetype beyond 2.9.1 (actually, 2.8.1 due to a bug in freetype 2.9) without wildly different font metrics. The reason that we don't want to change font metrics algorithms is that freetype's new algorithm is very different than the algorithm used for SWF fonts. The older freetype algorithm is closer to SWF, so we want to stick with it.

Thankfully, freetype supports accessing various metrics stored in font files in a more raw form, so we can provide our own custom algorithm in a way that is fully supported by freetype. I just copied the existing algorithm straight from 2.9.1 to restore our preferred behavior.

I confirmed that, after this change, OpenFL renders metrics like Lime 8.1.3. But we have the same upgraded freetype as Lime 8.2.0 that we had to revert for 8.2.1.

I plan to experiment with a mode that matches SWF even more closely, now that I have a better understanding of how fonts and freetype work.
2024-12-13 13:47:19 -08:00
Joseph Cloutier
a03c0c31f3 Fix whitespace. 2024-11-19 20:09:22 -05:00
win11
c0e1a1b4a4 Clean up PNG and JPEG encoding properly 2024-11-19 14:45:25 -08:00
Chris Speciale
6de4b67620 CFFI fix
Accept 3 values instead of 2. Incidentally, I thought this was going to be a rather simple straightforward change, but I suppose not.
2024-10-30 13:23:37 -04:00
Chris Speciale
d2562997bf Update CairoBindings to use a default of 72 dpi for fonts
We use a default of 72 for now to ensure text is formatted correctly. Not entirely sure why we are stuck on 72 but that is an investigation for the future.
2024-10-30 13:14:32 -04:00
Chris Speciale
579efa5351 Font: Allow setting dpi internally
This fixes some unexpected changes in text rendering for OpenFL which rely on a private function in Lime. Previously we defaulted at 72 dpi, which apparently is expected to layout the text properly. Most displays are 96 dpi or higher today, so we should probably look into this. For RenderGlyph, which was previously broken over several versions, we will now use a dpi of 96 for now. In the next version of lime, we absolutely should alter the function signature to allow for renderGlyph to accept a dpi argument.
2024-10-30 12:49:30 -04:00
Chris Speciale
e6fa4e73d4 Revert "SetSize should use 96 dpi for now"
This reverts commit 9cbdc83605.
2024-10-30 12:12:58 -04:00
Chris Speciale
e65e863918 Native RenderGylph should handle alpha properly 2024-10-28 23:38:18 -04:00
Chris Speciale
9cbdc83605 SetSize should use 96 dpi for now
I think it should probably use 96 dpi instead of 72.... In the next minor version of Lime I think we should change the function sig to allow a dpi argument.
2024-10-28 23:02:28 -04:00
Chris Speciale
4673b91c65 Fix RenderGlyph
We change the way RenderGlyph populates the binary data here. It's a little heavier than the 8-bit method used previously but I was having issues getting that to work properly with `Image`.
2024-10-28 22:51:15 -04:00
Chris Speciale
6a4099861e OpenALBindings: Avoid deadlock when Sys.exit() is called
This change eliminates the cleanup attempt of the current OpenAL context and associated system resources. A change in OpenAL 1.20.0 made it unlikely that we will be able to clean up things in this way moving forward. We should steer users toward using `lime.system.System.exit()` or petition a change in the haxe stdlib to allow us to hook into Sys.exit(). 

I am not 100% satisfied with this, so perhaps we will find another solution. In the end, I think the benefit of updating OpenAL supersedes any inconvenience here.

Closes https://github.com/openfl/lime/issues/1803
2024-10-25 11:08:15 -04:00
Joshua Granick
656c761cb0 Fix broken JPEG decoding (tested on Windows) 2024-07-09 13:27:54 -07:00
Josh Tynjala
8f3ea8d271 Merge branch 'develop' into 8.2.0-Dev 2024-07-08 14:31:23 -07:00
Joseph Cloutier
43b56eb86d Fix potential uninitialized values. 2024-05-29 19:50:52 -04:00
Joseph Cloutier
4819ff3b27 Make C++ mutex methods constant.
Closes #1729.

Co-authored-by: Diego Fonseca <fonseca.diego.feeshy@gmail.com>
2024-02-05 15:11:33 -05:00
player-03
7c50f6e9e9 Remove another unnecessary buffer copy.
Also, use `hxs_utf8()` for consistency.
2024-01-31 14:02:50 -05:00
player-03
590be2bbe6 Remove unnecessary string copy.
Casting `const char*` → `char*` is bad form, and we'd rather copy the string than do that. However, `GetGlyphIndex()` now takes a const, so neither workaround is needed.
2024-01-31 13:46:09 -05:00
Tobi Laskowski
1517bb3557 Clean up 2024-01-05 11:26:17 +00:00
player-03
79c4b05c06 Merge branch 'develop' into cffi-unicode-fixes 2024-01-05 00:03:31 -05:00
Joshua Granick
9b9faae177 Fix dynamic callback on HL (resolves issues in cURL) 2024-01-04 08:48:45 -08:00
Joseph Cloutier
9a9b89ae06 Merge branch 'develop' into 8.2.0-Dev 2023-08-17 21:07:12 -04:00
Josh Tynjala
987e3dd425 Merge branch 'develop' into 8.1.0-Dev 2023-08-14 15:53:18 -07:00
Zeta
26247f4f41 Fix string conversion in hl_window_alert. 2023-06-11 13:42:40 +02:00
Joshua Granick
a46eecc831 Disable try_blocking for now (requires HXCPP 4.3+) 2023-06-07 18:12:01 -07:00
Josh Tynjala
9e2d431e2b Merge branch 'develop' into 8.1.0-Dev 2023-06-06 12:35:57 -07:00
Josh Tynjala
aebf139dc7 Fix window show/hide on desktop being incorrectly considered the same as app going into and out of the background/suspend on mobile
The app's Timers should still continue when a window is hidden. Especially since an app could have multiple windows, with some being shown and some being hidden. If only one were hidden, the other shown windows would clearly behave in a broken manner because the one hidden window would cause all app timers, even those associated with other windows, to be paused.

Introduces new WINDOW_SHOW AND WINDOW_HIDE events from C++ to Haxe, and new onShow and onHide events on Haxe Window.

Followup to 0918ee2381
2023-06-06 10:56:06 -07:00
Josh Tynjala
f053205b7e Merge branch 'develop' into 8.1.0-Dev 2023-06-05 14:29:12 -07:00
Josh Tynjala
0918ee2381 SDLApplication: fix inconsistent setting of inBackground flag when dispatching WINDOW_DEACTIVATE and WINDOW_ACTIVATE (closes openfl/openfl#2645)
On SDL_APP_WILLENTERBACKGROUND and SDL_APP_DIDENTERFOREGROUND, inBackground was being toggled, but it was not toggled on SDL_WINDOWEVENT_SHOWN and SDL_WINDOWEVENT_HIDDEN. However, both pairs were dispatching WINDOW_DEACTIVATE and WINDOW_ACTIVATE from C++ to Haxe. When inBackground wasn't toggled, the UPDATE ApplicationEvent continued being dispatched from the C++, but the Haxe assumed that it wouldn't be. This meant that timers were still updated after WINDOW_DEACTIVATE for SDL_WINDOWEVENT_HIDDEN, but then they were still "advanced" as if paused on WINDOW_ACTIVATE for SDL_WINDOWEVENT_SHOWN. The next update time would be some time in the future, roughly equal to how long the Haxe thought the timers were paused. This could make it seem like the timers completed stopped updating, especially if they should have been paused for a long time. They would eventually continue, but they should have paused on WINDOW_DEACTIVATE and continued immediately on WINDOW_ACTIVATE.
2023-06-05 14:22:19 -07:00
Joshua Granick
35d1436dcd Revert WebAssembly improvements (moved to 8.1.0-Dev branch) 2023-05-30 09:03:18 -07:00
Joshua Granick
58275329cc Minor WebAssembly adjustments 2023-05-30 08:54:19 -07:00
Joshua Granick
79e11e4270 Minor main loop change for Emscripten 2023-05-30 08:54:09 -07:00
Joshua Granick
be19381999 Emscripten fixes 2023-05-30 08:46:52 -07:00
Joshua Granick
2406ff4b94 Minor WebAssembly adjustments 2023-05-24 12:37:17 -07:00
Joshua Granick
de5844aae1 Minor main loop change for Emscripten 2023-05-23 20:49:54 -07:00
Joshua Granick
eec6e5e0fa Emscripten fixes 2023-05-19 23:10:16 -07:00
EliteMasterEric
a7b83cb688 Removed Joystick trackball support. 2023-05-11 20:22:27 -04:00
Josh Tynjala
ab0cdc057d Merge branch '8.1.0-Dev' into 8.2.0-Dev 2023-04-24 14:01:04 -07:00
Josh Tynjala
ed3d7efe19 Merge branch 'develop' into 8.1.0-Dev 2023-04-24 09:52:11 -07:00
tobil4sk
7c9a1894f6 Take const char pointers in lime::Font methods 2023-04-21 19:11:38 +01:00
player-03
539e84dc7c Merge pull request #1648 from jobf/feature/open-al-efx-hl-invalid-param
Fix OpenAL binding AL.filteri for hashlink
2023-04-16 14:43:17 -04:00
Josh Tynjala
f07e94708b Window: minWidth/minHeight/setMinSize and maxWidth/maxHeight/setMaxSize 2023-04-11 09:46:10 -07:00
Josh Tynjala
a68e9c4b8e ExternalInterface: fix error from missing header on Linux in commit 95411acb8c 2023-03-28 13:00:23 -07:00
Josh Tynjala
95411acb8c ExternalInterface: fix conversion of std::wstring to std:string on non-Windows systems for file dialog functions (closes #1622) 2023-03-28 12:06:41 -07:00
Josh Tynjala
2b8e3c439e Merge branch '8.1.0-Dev' into 8.2.0-Dev 2023-03-20 09:44:45 -07:00
jf
aefce3c4ae change hl_al_filteri argument type 2023-03-17 18:14:42 +00:00
Josh Tynjala
33c8a79ddd ExternalInterface: fix lime_window_set_visible on HL (wrong signature) 2023-03-16 09:36:08 -07:00
Josh Tynjala
0160c12311 Window: visible property to show and hide window 2023-03-16 08:41:56 -07:00
player-03
97481eeacc Merge branch 'develop' into cffi-unicode-fixes 2023-01-24 10:47:26 -05:00
Josh Tynjala
2f4b0844ef Merge pull request #1531 from player-03/submodules
Restructure and update submodules
2023-01-13 13:44:33 -08:00
Josh Tynjala
8e3aa8afff FileDialog: fix case where no file extension filters are specified 2022-12-16 14:50:29 -08:00