Commit Graph

2367 Commits

Author SHA1 Message Date
Guldoman e3e8badf99 fix: avoid following symlinks in `common.rm` 2024-07-22 11:06:51 +08:00
Takase 27d95f63cb
renderer: rewrite glyph cache (#1845)
* renderer: rewrite glyph cache

This commit splits the current GlyphSet-based system into 2 caches,
CharMap and GlyphMap, which maps codepoints -> glyph IDs and glyph IDs -> glyphs respectively.
Each GlyphMap contains a number of GlyphAtlas mapped by their width,
and each GlyphAtlas has a list of surfaces with the same width.
Surfaces within the GlyphAtlas acts like a bump allocator, but is flexible
enough to allow older GlyphAtlas surfaces to be recycled.

GlyphMetric now contains atlas_idx and surface_idx, which points to the correct surface.
Since GlyphAtlas supports rudimentary packing & allocation, we no longer render whole
GlyphSets and this speeds up rendering in most cases.

Tab width is no longer set with the hacky "modify the GlyphMetric" hack.

* renderer: set natlas to 0 after freeing

* renderer: fix printf warning

* renderer: fix memory leak

* renderer: better whitespace rendering

* renderer: fix ubsan warning when casting ints

* renderer: fix tab handling

There's a bug with inconsistent tab widths caused by fontgroups.

* renderer: fix glyphs being loaded over and over

* renderer: add glyphmap size

* renderer: store per-surface offset_y and use it to find best-fitting surface

* renderer: fix MSVC compiler error

* renderer: remove return value from ren_font_glyph

* renderer: refactor xadvance calculation

* renderer: fix double free SDL_RWops if FT_Set_Pixel_Size fail

* renderer: always try .notdef before U+25A1

* renderer: disable ren_font_dump yet again

Accidentally commited this change.

* renderer: remove unused imports

* renderer: fix double free with FT_Open_Face

* renderer: return SDL_Surface in font_find_glyph_surface

* renderer: bring back metric flags for future extension

* renderer: refactor xadvance calculation into macro

* renderer: fix comment

* renderer: store GlyphMetric directly in the surface

* renderer: remove duplicated comment

* renderer: rename font_find_glyph_surface to font_allocate_glyph_surface

* renderer: refactor glyphmetric retrieval into an inline function

* renderer: do not render glyphs with bitmap set to null

This is a weird edge case, but at least it shouldn't crash

* renderer: refactor face metric code into its own function

* renderer: actually check if glyph fits in surface

* renderer: rudimentary support for non-scalable faces

At least it won't render nothing on the screen

* renderer: check for font_surface instead of metric directly

This is safe and shorter

* renderer: fix indentation

* renderer: rename GLYPH_PER_ATLAS to GLYPHS_PER_ATLAS

* renderer: rename all GLYPH_PER_ATLAS correctly

* renderer: make utf8_to_codepoint slightly more durable

* renderer: fix compiler unsigned cast warning
2024-07-13 02:39:49 +02:00
kramo 5a427a89b5 macos: Add proper platform-specific icon 2024-07-12 14:56:16 +08:00
takase1121 77d443c53d api/system: check if a window is created when firing DND events 2024-07-04 22:25:36 +08:00
takase1121 3d0344393c src/renwindow: correctly free texture and renderer 2024-07-04 21:57:33 +08:00
aia29 96579d9a7f add cuda 2024-07-04 13:09:00 +08:00
Adam 3bb27082ae
(fix): passed missing core.window to set_window_mode call (#1836)
* (fix): passed missing core.window to set_window_mode call

* Propogated fix to calls made from TitleView.
2024-06-30 07:26:01 +08:00
Takase e981fe46b5
Release v2.1.5 (#1840)
* chore: changelogs for v2.1.5

* chore: update versions
2024-06-30 07:21:35 +08:00
takase1121 482e8f3aed ci/release: adapt release note generation to the new script 2024-06-30 07:19:27 +08:00
takase1121 0129e9330f resources,scripts: use gh cli to fetch the correct release tags 2024-06-30 07:19:27 +08:00
Guldoman 9dd4b81b39 refactor(mac): adapt `LITE_USE_SDL_RENDERER` scaling to new windowing system 2024-06-25 13:42:17 +08:00
takase1121 adb64e6784 core/doc: fix wrong table index in Doc:merge_cursors
it was off by 1
2024-06-24 22:22:57 +08:00
Adam Harrison 1a293cd42e Fix window memory allocation bug. 2024-06-24 22:15:34 +08:00
Guldoman 7ca4c948bf fix(doc): convert `Doc:merge_cursors` parameter from "selection index" to table index 2024-06-24 22:14:53 +08:00
Takase 6cbfa44c95
core/rootview: fix dnd multiple folders into dock (#1828) 2024-06-23 13:09:07 +08:00
Guldoman 74fcd19ac2
fix(autoreload): wait a second before automatically reloading a file (#1823)
This is needed because we use `mtime` to determine if a file has actually changed, but on most systems this has a resolution of 1 second (and we truncate it to an integer anyways).

Without this wait, we would skip reloading a file that has been changed multiple times in the same `mtime` second, thus losing some data.
2024-06-23 10:01:50 +08:00
Guldoman face6af0da
fix(dirmonitor): avoid calling the change callback multiple times in the same notification (#1824) 2024-06-22 16:36:27 -04:00
Jan 1a045e5e86
move window creation and management to Lua (#1751)
* remove scaling logic from font code
for the time being its been hardcoded to 1 for the non SDL Renderer basewin setup, so nothing is lost for non MacOS users.
will be revisited in the future when scaling is improved with SDL3 and moved into scripts.

* remove unused window_renderer argument from font functions

* move window logic to lua, pass window via argument

* rename window creation functions `*_create`, `*_destroy`, add real init

* Set active window when processing frame

* get size directly from RenWindow, get active window size from renderer

* correct reverted draw calls

* fix window not reappearing on restart

* add simple logic to persist the core window

* fix style

* add renwindow documentation

* make windows hidden by default again

* reorder ren_update_rects execution, add comment to note future work
2024-06-22 15:01:39 -04:00
Adam dae74f01ae
Expand Process API (#1757)
* Initial commit of process framework.

* Fixed a small issue.

* Cleaned up old name.

* Harmonized with lua 5.4, and added documentation.

* Process is a userdata, not a table, so had to wrap it. Also added in `wait`.

* Added in documentation.

* Clarified documentation.

* Applied patch, and fixed undefined variable.

* Re-ordered documentation to be more sensible, added missing option.

* Added into start.

* Removed unecessary require.
2024-06-22 12:43:05 -04:00
fgelm01 5bca44f3bf
Handle static constexpr in language_cpp (#1806) 2024-06-22 12:15:33 -04:00
Takase 687aeda956
macos: support drag-and-drop and default file associations (#1822)
* macos: support drag-and-drop and default file associations

* resources/macos: use LSItemContentTypes to narrow down files

* macos: support opening folders

* rootview: workaround macos weird dnd event timing

* core/rootview: rename variable and refactor if statement
2024-06-22 12:23:06 +08:00
Guldoman 290c7bc27f
Update font scale on monitor scale change for `RENDERER` backend (macOS) (#1650)
* Update font scale on monitor scale change for `RENDERER` backend (macOS)

* fix(renderer): check every font of a fontgroup for scale changes in `update_font_scale`

It is needed because fonts can be reused between groups and outside of them.
So if the first font of a group has already been scaled, we still need to check if the others still needs to be scaled.
2024-06-21 01:56:51 +02:00
Gaspartcho c86677831e
Update language_python.lua (#1723)
* Update language_python.lua

* Update language_python.lua

* Update language_python.lua

* implemented a better `python_type` subsyntax

* Update language_python.lua

* fixed a small error where you couldn't hint a type at a var and guive it a value at the same time

* Update language_python.lua

* Update language_python.lua

Dictionaries appear now normally

* Update language_python.lua

* added suggestions concerning strings

* commited suggestion

Co-authored-by: Guldoman <giulio.lettieri@gmail.com>

* Various changes

* Update language_python.lua

Syntax more optimized but a tiny bit more complex...

* Simplified everything

---------

Co-authored-by: Guldoman <giulio.lettieri@gmail.com>
2024-06-21 07:54:32 +08:00
fgelm01 4ec908bc1e
Add support for binary integer literals. (#1819) 2024-06-20 14:55:01 +08:00
Takase 0fc179a4b5
language_cpp: backport number highlighting from c (#1818) 2024-06-20 10:16:39 +08:00
ThaCuber 4df2871a46
improve number highlighting for c (#1752)
* improve number highlighting for c

* add unsigned suffix

* add long suffixes

* reorder octal literals and add suffix for hex numbers

* fix integer and float suffixes
too many characters, send help
2024-06-20 10:02:12 +08:00
Takase 062f8dd1ff
resources/macos: better macos installer background (#1816) 2024-06-19 17:29:00 +02:00
Takase 3878e466e2
ci: dependabot updates (#1814)
* ci: dependabot updates

* dependabot: fix syntax error

* dependabot: better group name
2024-06-18 16:04:40 +02:00
Takase 05b388e3b7
subprojects: update lua,pcre2,sdl2 (#1812)
* subprojects: update lua,pcre2,sdl2

* meson.build: remove hidapi usage

* subprojects/sdl2: fix compilation with xinput

Co-authored-by: Guldoman <giulio.lettieri@gmail.com>

---------

Co-authored-by: Guldoman <giulio.lettieri@gmail.com>
2024-06-18 15:19:38 +02:00
Takase 646b43bd37
Update macOS copyright notice (#1815)
* resources: update copyright in info.plist

* meson.build: dynamically generate current year

"present" may be misleading.

* resources/macos: remove unecessary newlines
2024-06-18 15:00:14 +02:00
Takase a9d918901e
ci: use latest macos images (#1804)
* ci: use latest macos images

* ci/build: clarify the purpose of md5sha1sum

* meson.build: remove hidapi usage

* ci: downgrade macos version for universal build

* scripts: codesign the universal binary with sha1 and sha256

* ci: revert back to macos-14 for universal

* ci/build: remove old comment
2024-06-18 11:38:41 +08:00
Jan 39ba860645
Update labeler config for new version (#1805)
* Update labeler config for new version

* Fix indent

---------

Co-authored-by: Takase <20792268+takase1121@users.noreply.github.com>
2024-06-07 19:20:16 +08:00
Takase a17c7cfcd1
Update action dependencies (#1724)
* CI: update various action versions

The most significant change is action/upload-artifact@v4,
which does not support uploading artifacts of the same name.
This makes our lives significantly worse, but I don't know
if GitHub will remove v3 in future or not.

* CI: fix macOS universal artifact download

* CI: update release action versions

* CI: use containers only for building

* CI: fix multiline commands

* CI: try to fix multiline strings again

* CI: fix multiline strings again ugh

* CI: Fix ccache in containers

* CI: Fix quotes again

* CI: fix ccache

* CI: fix deprecated set-output command

* ci: update build box to v2.1.2

* ci: revert to softprops/action-gh-release

* ci: add name to release

* ci: remove name again

* ci: fix wrong outputs reference

* ci: add name

* ci: add missing name for each step

* ci: format yaml files

* ci/release: add names to unamed entries

* ci/release: fix MSYS2 not downloading deps

* ci/release: change to ncipollo/release-action

There is some weird issue with softprops/action-gh-release and I can't update an existing release.

* ci/release: allow updating releases

* ci/release: upload all artifacts, then download them at once

* ci/release: use a better name for job

* ci/release: add release as dependency

* ci/release: set tag for update release

* ci/auto-labeler: remove workaround for old autolabeler issue

* ci/release: remove the need of another bash -c

* ci/release: remove weird bash -c
2024-06-07 10:08:12 +08:00
Takase 490f627f38
ci: fix typo in release note template (#1801) 2024-06-06 09:51:57 +08:00
Guldoman 4d649ba92d
fix: avoid iterating over a changing table in `run_threads` (#1794)
* fix: avoid iterating over a changing table in `run_threads`

This is done to avoid iterating over a table that can change in the meantime.
More precisely the issue appears if a thread is removed from the table, we yield early from `run_threads` because we reached the end of the frame, and a new thread is added before the next iteration.

For example:
```lua
local lost_time = false
core.add_thread(function()
  -- force early yield
  local t0 = system.get_time()
  while system.get_time() - t0 < .1 do end
  lost_time = true
end, "a")

local step = core.step
function core.step()
  if lost_time then
    -- add a new thread while run_threads hasn't finished iterating
    core.add_thread(function()end, "a1")
    lost_time = false
  end
  return step()
end
```
would crash with `invalid key to 'next'`.

* fix: only run coroutine if it wasn't removed

* fix: don't handle `core.threads` table as an array

This caused some entries to be skipped or even removed erroneously.
2024-06-05 08:58:19 -04:00
fgelm01 e0a7bdbcba
Change co_wait to co_await in language_cpp (#1800)
The C++20 keyword is spelled `co_await`.
2024-06-05 12:25:33 +02:00
Takase e74cee1419
api/system: fix newlines returned by get_clipboard (#1788) 2024-05-23 22:19:15 +02:00
Takase 5549c0bd29
Generate release notes (#1774)
* ci: generate better release notes

* scripts: rename generate-release-note.sh

* ci/release: check out all the history

* ci/release: accept version from input
2024-05-18 07:12:04 +08:00
Guldoman 7d876f81ad
build: fix dirmonitor backend selection (#1790)
When a backend was specified using meson, the relative source files weren't being added.
2024-05-17 17:19:39 +02:00
Takase 7fdb35ac46
Release v2.1.4 (#1772)
* changelog: add changes for 2.1.4

* chore: update version and changelog
2024-04-16 19:12:43 +08:00
Takase fb3a707ce6
ci: fix missing permission for creating releases (#1770) 2024-04-15 11:44:06 +08:00
Guldoman 21dcd782c0
Skip patterns matching nothing in `tokenizer` (#1743)
These patterns cause infinite loops, so warn about them and skip them.
2024-04-15 09:00:03 +08:00
Andrei Vinca 0795a5dad4
Fix BufferSize in g_read for Windows (#1722) 2024-04-15 08:52:49 +08:00
PerilousBooklet 727c179deb
Added Arduino syntax highlighting support alongside C++. (#1767) 2024-04-13 10:54:31 +02:00
PerilousBooklet e9e2d83dc5
Fixed some typos in core.init (#1755)
* Fixed some typos.

* Update data/core/init.lua

Co-authored-by: Takase <20792268+takase1121@users.noreply.github.com>

* Update data/core/init.lua

Co-authored-by: Takase <20792268+takase1121@users.noreply.github.com>

---------

Co-authored-by: Takase <20792268+takase1121@users.noreply.github.com>
2024-03-28 19:33:55 +01:00
Guldoman 3bed5c16ae
Limit `language_js` regex avoidance to numbers, and fix starting `/*` comments (#1744)
* Avoid starting regexes only after numbers in `language_js`

* Allow starting `/*` comments after numbers in `language_js`
2024-03-25 00:20:32 +01:00
Aziz Mazouz Jaber 6e849890be
Add from symbol to support ESM (#1754) 2024-03-24 14:25:44 -04:00
Jan 5d264e14ef
Add SerenityOS platform support (#1745)
* Add SerenityOS platform support

* remove cpp_std default option
2024-03-18 13:55:01 -04:00
Guldoman 62d7ec8e85
Rectify `LICENSE` dates and owners (#1748) 2024-03-15 21:03:24 +01:00
Takase 2b7bed9a4e
scripts: not hardcode MSYSTEM (#1739) 2024-03-07 01:21:46 +01:00