- 26 Jun, 2023 3 commits
-
-
Ivan Matkov authored
-
Ivan Matkov authored
-
Sebastiano Poggi authored
## Improve font loading and listing Available font listing doesn't rely anymore on discovering and loading font files from the disk. This is MUCH faster than the previous solution, which could take seconds on a performant machine. Besides, this greatly reduces memory usage as we're only holding the font family names list in memory, and cache items in memory lazily only once they are requested to speed up later lookups. Users can manually clear the memory cache, and register custom fonts (from files or resources). We now get the list of available font families directly from Skia, with some additional features such as adding entries for the system font on macOS (which is hidden by default). To note, the list of fonts available to Skia is not the same as available to AWT, for a number of reasons: 1. AWT adds logical fonts (e.g., `Dialog`) 2. AWT silently substitutes broken fonts 3. AWT lists the macOS system font, but under a weird name, `.AppleSystemUIFont`, whereas Skia doesn't 4. AWT and Skia don't use the same logic to list installed fonts on all platforms 5. AWT includes fonts embedded into the JVM automatically This makes things a bit more complicated, but if you _know_ the correct family name, everything works fine. While AWT silently substitutes invalid font family names with others, Skia will return `null` if it can't find a font. We follow the Skia approach, returning null if we can't match a font family name. ## Improve AWT `Font` conversion to Skiko `Typeface` On the JetBrains Runtime, the `Font.toSkikoTypefaceOrNull()` will be able to properly match an AWT `Font` to a Skiko `Typeface`, even on OSes other than macOS. If running on other JVMs, this returns `null`, as requested by @igordmn. This requirement is documented in the KDocs. The necessity to be on the JBR is due to the "regular" AWT implementations of `sun.font.Font2D` and `sun.funt.TrueTypeFont` being essentially broken: they read the wrong entry from the `name` table in TrueType fonts and use it as font family name. In the JBR, additional logic has been added to read the correct entry, the [_preferred family_](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6name.html), and we can use this information to match with Skia font families, as Skia uses the correct _preferred family name_.
-
- 20 Jun, 2023 2 commits
-
-
Alexander Maryanovsky authored
Reimplement the Canvas transformation functions via the corresponding Skia functions, rather than by concatenating with a transformation matrix. (#724)
-
Alexander Maryanovsky authored
-
- 05 Jun, 2023 2 commits
-
-
Nikolai Rykunov authored
* Use naming constants instead of numbers for clear colors * Simplify clear colors logic and add comments
-
Ilya Ryzhenkov authored
Avoid sharing folders for build outputs to enable proper up-to-date checks and use of gradle 8.1.1 (#717)
-
- 30 May, 2023 1 commit
-
-
Oleksandr Karpovich authored
-
- 26 May, 2023 1 commit
-
-
Elijah Semyonov authored
* Make rundown rendering bandaid(or not) fix to avoid incorrect scheduling problem * Remove unneeded counter check. * Extract magic value. Document it. * Remove bandaid. * Make right scheduling. * Fix for path on double-dispatch during vsync-frame. * Change logging a bit. * Update doc * Update doc * Add comment on touchesCount, rephrase the body. * Replace control flow with `also` * Remove debug logs. * Refactor 2 booleans into single enum. * Simplify enum * Replace Unit with empty body in `when` expressions. * Replace comment style in function scopes. * Make DrawSchedulingState private. * Change comment style on private property. * Add rationale behind drawSchedulingState initial value.
-
- 17 May, 2023 2 commits
-
-
Elijah Semyonov authored
This reverts commit 85aef666.
-
Elijah Semyonov authored
Implement machinery for blocking draw dispatch before next vsync using synchronous wait on semaphore in native code. Implement mechanism to prevent Metal command buffers overcommitment.
-
- 16 May, 2023 2 commits
-
-
Martin Bonnin authored
Minor tweak to the README
-
Elijah Semyonov authored
* Add method to MetalRedrawer for obtaining current UIView to which metalLayer is attached. * Update caDisplayLink preferredFramesPerSecond when syncing metalLayer drawable size. * Update skiko/src/iosMain/kotlin/org/jetbrains/skiko/redrawer/MetalRedrawer.ios.kt Co-authored-by:
dima.avdeev <99798741+dima-avdeev-jb@users.noreply.github.com> --------- Co-authored-by:
dima.avdeev <99798741+dima-avdeev-jb@users.noreply.github.com>
-
- 10 May, 2023 2 commits
-
-
Elijah Semyonov authored
* Throw exception instead of force unwrapping Metal handles * Update skiko/src/macosMain/kotlin/org/jetbrains/skiko/redrawer/MetalRedrawer.macos.kt Co-authored-by:
Ivan Matkov <ivan.matkov@jetbrains.com> * Update based on review feedback * Remove redundant this * Remove unneeded imports --------- Co-authored-by:
Elijah Semyonov <elijah.semyonov@jetbrains.com> Co-authored-by:
Ivan Matkov <ivan.matkov@jetbrains.com>
-
Ivan Matkov authored
-
- 04 May, 2023 1 commit
-
-
Nikolai Rykunov authored
* [awt.metal] Extract MetalDevice interface into .h file * [awt.metal] Move context and renderTarget creation to ContextHandler ContextHandler shouldn't depend on redrawer, since redrawer depends on ContextHandler * [awt.metal] Use value class to hold MetalDevice pointer * [awt.metal] Add docs for MetalDevice * [awt.metal] Add simple docs for MetalRedrawer and MetalContextHandler * [awt.metal] Use null instead of artificial pointer to 0 --------- Co-authored-by:Ivan Matkov <ivan.matkov@jetbrains.com>
-
- 28 Apr, 2023 1 commit
-
-
Oleksandr Karpovich authored
* Update docker linux-emscripten-amd64 Install necessary libs + update emcc 3.1.35 * Update Dockerfile
-
- 21 Apr, 2023 1 commit
-
-
Pavel authored
-
- 20 Apr, 2023 2 commits
-
-
Pavel authored
* allow to configure logger in example applications * use `layer.backedLayer` position and size as source to update CALayer * non zero layer origin test
-
Ivan Matkov authored
* Expose u_charDirection * Move CharDirection to icu package * Add doc comment for CharDirection
-
- 19 Apr, 2023 2 commits
-
-
Pavel authored
component listeners are performed to late so for absolute positioning we need to stick with `doLayout`
-
Alexander Maryanovsky authored
-
- 18 Apr, 2023 3 commits
-
-
dima.avdeev authored
This reverts commit 2147b0e7.
-
Tareque Md Hanif authored
-
Ivan Matkov authored
* Add invalid unicode text that detects interop issue * Remove utfToUtf8 function * Fix JVM invalid unicode strings interop * Update invalid unicode unit test * Fix formatting and add more comments
-
- 11 Apr, 2023 1 commit
-
-
Manuel Unterhofer authored
-
- 04 Apr, 2023 1 commit
-
-
dima.avdeev authored
-
- 29 Mar, 2023 2 commits
-
-
Igor Demin authored
1. Remove SkikoTouchEvent, we send all pointer events as SkikoPointerEvent now. 2. Add SkikoPointerEvent.Pointer that represents a separate touch/mouse 3. Implement multitouch for iOS/Android
-
Pavel authored
* sometimes when we change scale via `EasyRes` or when we close/open lid and window is migrated to other screen `paint` is not called see FL-18544 * customizable logger behaviour * add debug logs in AWT layer
-
- 27 Mar, 2023 1 commit
-
-
dima.avdeev authored
-
- 22 Mar, 2023 1 commit
-
-
Pavel authored
* migrate to m110 * use skia m110-ad42464-1 --------- Co-authored-by:Oleksandr Karpovich <a.n.karpovich@gmail.com>
-
- 18 Mar, 2023 1 commit
-
-
Alexander Maryanovsky authored
-
- 06 Mar, 2023 1 commit
-
-
dima.avdeev authored
-
- 01 Mar, 2023 1 commit
-
-
Ivan Matkov authored
* Add more prerequisites for building * Xcode CLI is applicable to macOS only
-
- 23 Feb, 2023 2 commits
-
-
Pavel authored
* prevent usage of dangling pointer to `MetalDevice` MetalRedrawer may be disposed during update which leads to use after free * add test and comment
-
Manuel Unterhofer authored
…on Windows First off, I don't think there was any need for the repeated checks for device pixel ratio changes via checkContentScale because we should be able to rely on the graphicsContextScaleTransform property from AWT. I removed the corresponding code and changed contentScale to directly return the platform-specific implementations from the toolkit/device. There's also no need to cache the value because the device and the graphics configuration already does it for us. Secondly, there was a layout glitch on Windows when moving windows between monitors with different device pixel ratios. A fix has to happen directly in the JBR, but for now I created a semi-cheap workaround. See this issue and the linked ones for details: https://youtrack.jetbrains.com/issue/JBR-5259/Canvas-is-painted-at-the-wrong-position-after-dragging-JFrame-to-a-monitor-with-different-scale
-
- 22 Feb, 2023 1 commit
-
-
Igor Demin authored
* Update docs about development on Windows Specified a more detailed manual how to install Visual Studio. I checked it on a clean PC. * Update DEVELOPMENT.md * Update DEVELOPMENT.md
-
- 13 Feb, 2023 1 commit
-
-
Pavel authored
* added performance test with clocks ignore tests with clocks * use simple logger instead of printlns * checked that we call `finishRecording` at the same picture that we called a `beginRecording` * make `Logger` internal * disable assertions in rendering performance test with content; otherwise it might be too flaky * unignore `FPS is near display refresh rate (multiple windows with clocks)`
-
- 10 Feb, 2023 1 commit
-
-
Steyn Geldenhuys authored
Co-authored-by:Steyn Geldenhuys <steyn.geldenhuys@sieveo.com>
-
- 07 Feb, 2023 1 commit
-
-
francescotescari authored
-