Commit Graph

127 Commits

Author SHA1 Message Date
Francesco Abbate 351a772466 do not use 'portable' as a compile time option
Introduce the file core/start.lua to initialize applications variables
2021-02-24 16:29:39 +01:00
Francesco Abbate ea8a8770ea Do not use nullptr and add check 2021-02-24 09:46:48 +01:00
Francesco Abbate 35f31c8fbc Fix font rendering artifacts bug
Seen with some fonts like FiraSans, github issue:

https://github.com/franko/lite-xl/issues/46

The fix works essentially by looking to the bounds of each glyph to
accurately ensure that there are no overlaps between the glyphs.

The construction of the font atlas was changed to make some related
improvements now that the bounds of each glyph are know. The main
changes are:

- no longer align glyph on the baseline but align them on their upper
  bounds. We ensure this way that very tall fonts do not leak in the
  upper part
- terminate the row based on x bounds of the glyph to be more accurate
- for each row keep trace of the y of the more larger along y of the
  glyph. The value is used to start a new row to be sure that the new
  now does not overlap with the previous one
- sort glyphs by y size before drawing them. In this way the space
  utilization is better. The algorithm used is the very simple insert
  sort. It behaves like O(n^2) with the number of characters but should
  be ok since n is always small, typically below 128.
- compute the optimal image width and height for the given font's atlas
  for optimal memory usage. As a bonus now the lite's code don't have to
  try and repeat to get a good image size
2021-02-23 17:14:08 +01:00
Francesco Abbate 9fced84a7a Move VERSION variable into Lua code
To avoid recreating binaries if there are no changes
in the C side of the source code.
2021-02-16 14:35:02 +01:00
Francesco Abbate 882413e92d Bump 1.16 version number 2021-01-13 16:52:27 +01:00
Francesco Abbate d3686bb6f4 Bump new version number 2020-12-31 11:27:35 +01:00
Francesco Abbate 2cdf674b97 Keep memory of window's size and position and restore them on start
Fix also a problem with directory path on windows.
2020-12-31 11:25:12 +01:00
Francesco Abbate 35c87462a6 Use ~ for HOME directory in folder search 2020-12-19 16:31:42 +01:00
Francesco Abbate e50d67df85 Update readme and changelog for release 1.14 2020-12-13 13:04:29 +01:00
Francesco Abbate 1fc0409163 Merge branch 'project-manager' 2020-12-12 20:27:07 +01:00
Francesco Abbate 6409b67ea2 Add core:restart function to restart the editor 2020-12-10 12:44:01 +01:00
Francesco Abbate 1c4b8cf315 Fix documentation and behavior for 1.13 release 2020-12-06 11:23:33 +01:00
Francesco Abbate afda299fe4 Implement optional font rendering options
The user can now choose antialiasing grayscale and subpixel and hinting
non, slight or full.
2020-12-04 16:15:54 +01:00
Francesco Abbate be189fda0d Always use HOME based user's config independently from portable option 2020-12-04 12:01:49 +01:00
Francesco Abbate c41dedafad Improve the implementation of unix-like directories usage
Add a Meson option "portable" to choose between "portable" and unix-like
directories. Add information about this option in the README.

To determine the user's directory use the variable USERPROFILE only on
Windows and use HOME otherwise.

Implement the "portable" option in the package build script.
2020-12-03 16:46:18 +01:00
Francesco Abbate 277186491a Fix some problems with user's directory
To accommodate the Window's platform prefer the USERPROFILE to HOME
to set user's dir.

Fix error, user's dir was not added to the package.path.
2020-12-02 16:43:35 +01:00
Francesco Abbate a337f893d9 Implement user's config as init file and add directory into package.path
Create the user's config init file if lite user's config directory does
not exists.

No longer use the awkward package.searchers but instead add user's
config dir at the end of package path.
2020-12-02 16:03:31 +01:00
Francesco Abbate 3589d7d3c0 First implementation of unix-like data directory
It basically works by setting the data directory to

$prefix/share/lite-xl

where $prefix is determined so that $prefix/bin corresponds to EXEDIR.

The packages 'user' and 'user.*' are loaded from the directory
'$HOME/.config/lite-xl'.
2020-12-02 00:23:15 +01:00
Francesco Abbate 70412b520b Fix cursor blinking problem
The problem was that when the editor had no events the cursor was not
blinking because the event loop was blocking on wait_event.

Now we no longer calls wait_event without a timeout if the windows has
the focus. When the window has the focus the timeout is set to 1 / fps
so that the cursor can blinks.

In addition we react to the "focus lost" event to ensure the documents
are redrawn without the cursor.
2020-11-21 16:36:32 +01:00
Francesco Abbate cdcd89d6d7 Merge remote-tracking branch 'rxi/master' 2020-11-17 10:24:27 +01:00
rxi 878c94a334 Changed rencache to store font tab_width with font command
Fixes bug where text would be drawn/cached wrongly if more than one tab_width
was used in a given frame
2020-09-05 15:09:54 +01:00
Francesco Abbate 1c5767d393 Merge remote-tracking branch 'rxi/master' 2020-08-19 10:08:32 +02:00
rxi 91c43dc01e Version 1.11 2020-07-05 10:56:39 +01:00
Francesco Abbate 14ec61511d Merge remote-tracking branch 'rxi/master' 2020-07-04 22:08:25 +02:00
Francesco Abbate 77a9819f4e Fix SDL2 include directives 2020-06-29 15:24:08 +02:00
rxi 87532a4b3a Version 1.10 2020-06-28 14:40:07 +01:00
rxi 11df722162 Version 1.09 2020-06-21 19:38:42 +01:00
Francesco Abbate fe0dda8309 Merge remote-tracking branch 'rxi/master' into agg-font-renderer 2020-06-16 15:00:47 +02:00
Francesco Abbate 5c3d4163d3 Modify system.wait_event to wait indefinitely if no timeout is given 2020-06-16 14:53:01 +02:00
Francesco Abbate f5ede27e91 No longer use gamma correction
Text looks more correct without the gamma correction. With gamma correction
text looks too bold in dark mode and too light in light mode. This
behavior is a sign that gamma correction is not the right thing to do.

The problem is seen with gamma at 1.5 used previously but is even worst
if a gamma value of 2.2, the theoretical value, is used.
2020-06-16 14:43:03 +02:00
rxi 1db1f0bceb Version 1.08 2020-06-14 13:33:23 +01:00
Francesco Abbate 3c3662b3ba Add option to disable X axis font's pre-scaling
If used pre-scaling along X null the effect of the font's hinting.
2020-06-12 16:06:39 +02:00
Francesco Abbate 4d3693479d Merge remote-tracking branch 'rxi/master' into agg-font-renderer 2020-06-11 23:22:49 +02:00
Francesco Abbate 9e996a2d87 Rename FontRenderer to FR_Renderer 2020-06-11 23:19:08 +02:00
Francesco Abbate 93a36617f9 Bring back simple grayscale rendering option 2020-06-11 23:11:40 +02:00
Francesco Abbate 00c3983da6 Rename FontRenderer* symbols as FR_* 2020-06-11 18:12:47 +02:00
Francesco Abbate 117714390a Make the FontRenderer's Bitmap struct opaque outside the library 2020-06-11 17:52:00 +02:00
Francesco Abbate ce664f85b1 Move rendering buffers pointers computations inside FontRendererBlendGammaSubpixel
The logic is to disentangle the code between renderer.c and FontRenderer
so that this latter has a simple, logical interface.
2020-06-11 17:33:57 +02:00
rxi 95b70b1b16 Revert "Removed __APPLE__ `#ifdef` from main.c"
This reverts commit 6a7e214d1c.
2020-06-11 15:05:39 +01:00
Francesco Abbate 18865fd32f Remove font renderer debug code 2020-06-09 16:55:26 +02:00
rxi db471c0554 Version 1.07 2020-06-07 14:02:45 +01:00
rxi 6a7e214d1c Removed __APPLE__ `#ifdef` from main.c 2020-06-07 08:57:57 +01:00
Francesco Abbate fc148d7a51 Merge remote-tracking branch 'rxi/master' into font-rendering-tests 2020-06-07 00:19:03 +02:00
Francesco Abbate e82d766c2b Add more debug information in font's bitmap images 2020-06-07 00:15:38 +02:00
Francesco Abbate 81289d651e Move font resize in a separate function 2020-06-06 19:11:14 +02:00
Francesco Abbate dcf6b06629 Cleanup debug code 2020-06-06 13:08:39 +02:00
Francesco Abbate d17fde1b13 WIP: debugging stuff 2020-06-06 10:52:50 +02:00
Francesco Abbate c5575de058 Move font renderer in a separate folder as a library 2020-06-04 18:52:01 +02:00
Francesco Abbate 2171ea17fb Add correct copyright information 2020-06-04 18:14:02 +02:00
Francesco Abbate ac36cfc59c Remove unused code files 2020-06-04 18:13:28 +02:00