Commit Graph

172 Commits

Author SHA1 Message Date
Francesco Abbate 33fe7295c0 First working implemention
Cleanup also debug messages
2021-04-23 14:54:25 +02:00
Francesco Abbate 685b8c82d0 WIP: testing usage of SDL renderer
It does segfault.
2021-04-23 11:58:53 +02:00
Francesco Abbate 12ca5f3d2a Add momentum scroll for macos
Taken from @mathewmariani lite-macos
2021-04-21 09:52:16 +02:00
Francesco Abbate 1f6680b492 Add macos flush specific fix
Taken from @mathewmariani lite-macos
2021-04-21 09:51:40 +02:00
Francesco Abbate 8bcace1d59 Merge remote-tracking branch 'origin/border-less-window' 2021-04-21 08:42:57 +02:00
Francesco Abbate c97fa9a3a6 Fix bug with wrong hashing of rencache commands
The command in rencache.c (Command struct + variable length text) was
incorrectly sized. As a result some bites at the end of the command payload
were uninitialized and was causing hash to randomly change forcing the
system to redraw many more areas.

Since the text of the command for DRAW_TEXT commands is written beginning
at the offset of the text field we compute the bare size of the command as
offsetof(Command, text) instead of sizeof(Command).
2021-04-20 21:54:05 +02:00
Francesco Abbate 94c8f34a81 Fix missing header for macos 2021-04-19 01:18:52 -07:00
Francesco Abbate 2f8c70ac51 Remove bundle_open.h file 2021-04-19 09:52:00 +02:00
Francesco Abbate 53f77a29ea Implement correctly loading from macos bundle resources 2021-04-18 08:51:31 -07:00
Francesco Abbate f913a8513f Testing functions to open files from bundle 2021-04-18 17:08:35 +02:00
Francesco Abbate d5e9ef6bff Remove trailing debug message 2021-04-12 19:12:21 +02:00
Francesco Abbate f7375924ab Make non-borderless mode work 2021-04-12 19:05:30 +02:00
Francesco Abbate 4de97d51fb Avoid always calling system.get_window_mode 2021-04-12 13:31:32 +02:00
Francesco Abbate 46791aefe5 Implement maximize/restore controls
Remove also resize from top and right of the window
2021-04-12 11:54:52 +02:00
Francesco Abbate 67dc16ad26 Make windows control buttons active 2021-04-11 23:52:31 +02:00
Francesco Abbate 8ad87d77da Add correct hit-test information and menu icon 2021-04-11 15:08:25 +02:00
Francesco Abbate 7531a0ddc8 Preliminary implementation of border-less mode
Not yet functional but most ingredients are there
2021-04-10 19:35:57 +02:00
Francesco Abbate b1c1deb4c4 Remove no longer used system.show_confirm_dialog
Replaced by the NagView dialog
2021-04-06 07:12:33 +02:00
Takase 49cde08ed6
Use Xlib to read resources (#142) 2021-04-02 16:43:21 +02:00
Francesco Abbate 3b040aabc7 Implement unicode character replacements
Useful to draw whitespaces with alternate characters and colors
without slowing down the text rendering.

A new API is implemented. A renderer.replacements object can be created
to list the replacements.

In turns the function renderer.draw_text and draw_text_subpixel now accept
two optional arguments for replacements.
2021-04-01 18:05:59 +02:00
Francesco Abbate 4b3b8f430a Merge remote-tracking branch 'basinbaby/set-window-opacity'
Implement the suggestion and close #125.

Initial suggestion and implementation from

https://github.com/rxi/lite/pull/17
2021-03-23 07:15:18 +01:00
Francesco Abbate e160ed4e5e Add comments about unused RenFont data field 2021-03-20 23:05:09 +01:00
Francesco Abbate b33167ca4b Revert "Remove unused data field in RenFont"
This reverts commit 461266e97d.

Related to github issue #122.

The void *data field is not used but the glyphset index can
someting be equal to -1 and the unused field prevent faulty
writes before the allocated struct.
2021-03-20 21:48:04 +01:00
Francesco Abbate aee602ea2f Merge branch 'xrdb-lean' 2021-03-18 16:20:32 +01:00
Francesco Abbate 461266e97d Remove unused data field in RenFont 2021-03-18 14:05:58 +01:00
Francesco Abbate ecb9e88fdb Merge branch 'master' into xrdb-lean 2021-03-18 14:00:54 +01:00
Francesco Abbate 88bec172a1 Fix problem with tab size and subpixel positioning
Solve github issue https://github.com/franko/lite-xl/issues/109
2021-03-18 13:54:33 +01:00
Francesco Abbate a742c56ee7 Minor xrdb buffer optimization 2021-03-18 10:06:01 +01:00
Francesco Abbate 43e08b0f8e Fix problem with previous commit and remove strtol call 2021-03-18 10:00:03 +01:00
Francesco Abbate 51e7c9493f Minor change for xrdb output parsing
Use memmove to copy remaining bytes at beginning of buffer
2021-03-18 09:32:52 +01:00
Francesco Abbate ac0728d073 Check for error in pipe call 2021-03-17 18:29:50 +01:00
Francesco Abbate 30f9f20e23 Ensure xrdb code is compiled only on unix 2021-03-17 18:10:47 +01:00
Francesco Abbate dab39d3b5c Implement xrdb reading without popen
Avoid using the shell, awk and cut command
2021-03-17 16:58:44 +01:00
daubaris 27f3cb23d4
Addressing the scaling factor on linux. (#107)
Use xrdb and the Xft.dpi variable to find out DPI scaling on linux.
2021-03-14 16:13:26 +01:00
Francesco Abbate baf5aebe1c Merge remote-tracking branch 'origin/master' into subpixel-font-positioning-fix 2021-03-07 12:25:53 +01:00
Francesco Abbate 23a053e1ee Ensure error and stack trace are written to stdout
To address https://github.com/franko/lite-xl/issues/87
2021-03-07 09:48:44 +01:00
Francesco Abbate 3426bc5d73 Introduce subpixel text positioning within rencache
In order to fix the issue with cursor positioning a subpixel-aware draw
text operation within rencache was required.

With this modification the cursor positioning problem is completely
resolved.

A new function renderer.draw_text_subpixel is introduced to perform
consecutive, inline, text drawings with subpixel accuracy.
2021-03-06 18:12:02 +01:00
Francesco Abbate 9ff6a0325e Mostly fix problem of offset with cursor positioning when using mouse
In order to get right the cursor position on text on mouse clicks it is
needed to take into account text's subpixel positioning.

This fix mostly corrects the problem but cursor positioning is still
somewhat inaccurate for long lines due to repeated commands to draw a text
along a line. Repeated draw text calls make the subpixel information
lost and small errors will add-up.
2021-03-06 16:18:24 +01:00
Francesco Abbate 09332fe242 Fix problem with fatal error message
Previous implementation was broken.

Ensure the error file is always written and write its location in the error message
2021-03-05 23:46:41 +01:00
Francesco Abbate a4bc8986ff Implement fatal error message box
Used when lite-xl fails at startup
2021-03-05 10:33:50 +01:00
Francesco Abbate 636bc7ec95 More accurate EXEDIR detection
Use ony the OS path separator to parse the executable filename
2021-03-05 09:42:48 +01:00
Francesco Abbate ffb4773a0b Merge branch 'subpixel-font-positioning' 2021-03-05 09:14:25 +01:00
Francesco Abbate 1ea497deb4 Fix problem when launching from a different location
Should fix https://github.com/franko/lite-xl/issues/76 and https://github.com/franko/lite-xl/issues/67
2021-03-05 07:28:29 +01:00
Francesco Abbate 294f3f14fb Implement subpixel font positioning
Subpixel positioning is only by 1/3 of pixel
2021-03-03 18:36:09 +01:00
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