[0.3.0] - 2020-12-21
Breaking Changes
- Spaces are not allowed in hex numbers anymore but undorscores are.
It caused problems since 0xAA B could not be unambiguously parsed (e.g. it can be 0xAAB or 0xAA B, where 'B' is a unit for 'bytes', so make it explicit by writing 0xAA_B).
Features
- Dark Theme
- Render command optimizations, reducing render command count by around 40%
(gutters, line number- and result backround
are now rendered only once as a big rectangle and not line by line). - Active references (variables and line refs in the cursor's row) are now just underlined
and the referenced lines are not highlighted fully only their left and right gutter.
(Look at the image below) - Results where a denominator is a unit (e.g. 5 / year) are now rendered in a more user-friendly way (e.g. instead of
5 year^-1
it is5 / year
)
- Automatic closing parenthesis/braces insertion when the opening one is typed
- Automatic closing parenthesis/braces deletion when the opening one is deleted
- Automatic parenthesis/braces wrapping around selected text if opening one is typed while
a text is selected
- Matching parenthesis are highlighted if the cursor is inside them
- The note can be saved with
ctrl-s
(Though it is still saved automatically when there is no user interaction) - It is possible to apply units directly on Line References or Variables, e.g.
The result of the second line will bevar = 12 var km
12 km
- Parsing improvement: Now the parser are smarter in deciding what is an operator (e.g. 'in' in
12 m in cm
),
a unit (12 in
which is 12 inch), or a simple string (I downloaded 12 GB in 3 seconds
).
Now it is even possible to evaluate this string12 in in in
, which is equivalent of12 inch in inch
- Percentage calculations
- Max row count was increased from 128 to 256
- e (Euler's Number) was added, currently as a function (
e()
) - Invalid argument types for functions are highlighted as errors (See image below)
- new functions:
- abs(num)
- ln(num)
- lg(num)
- log(num, num)
- sin(angle) -> num
- cos(angle) -> num
- tan(angle) -> num
- asin(num) -> angle
- acos(num) -> angle
- atan(num) -> angle
Changed
- When opening a not empty note, the result panel now tries
to be as close to the editor as possible to have a better
overview about calculations and their results. - GitHub and website links were added to the NoteCalc page
- Strings at the frontend are now rendered char by char. It is necessary
to be able to place the cursor at the right place, since the text rendering
does not guarantee that a single char takes exactly 'char-width' pixels. - Overlay canvas (the canvas above the app canvas) was removed. It was used to draw
overlay effects (e.g. pulsing), but it was problematic since it needed alpha blending,
which wasn't always nice and console frontend support is limited.
Now pulses are rendered above "BelowText" layer and below the "Text" layer. - underscore is allowed in binary numbers (e.g.
0b11_00
) - Parenthesis have different color than operators.
- Remove
Vec
and dynamic allocation from unit parsing and operations. - Replaced all unit
RefCells
toRc
, it was a mistake to useRefCells
in the first place. - Matrices cannot be deleted anymore by
DEL
orBACKSPACE
, ctrl is needed
Fixed
- Dead characters (e.g. '^' on a hungarian keyboard) were not possible to type
- Longest visible result length was calculated wrongly when there were multiple headers
in a note, which affected the result panel size. sum
variable get emptied at #Headers- Char width at the fonrend is now integer, ceiling upward. It caused issues
with rendering (widths of recatngles were float as well and did not always fill up
the required space) - Underlines and line reference background rectangles were rendered even if they
were outside of the editor area ctrl-x
did not copy the selected text- Units in the denominator behaved buggy. now expressions like this works well
tax A = 50 000/month tax B = 50 000/year (tax A + tax B) * (1 year)
- u64 values can be parsed correctly (e.g. 0xFFFFFFFFFFFFFFFF)
- Bitwise operations now work on u64 values
- Negative numbers can be presented in binary and hex form
- Line reference pulsing was called each time a cursor was pressed on the line ref's line, causing
flickering - 'Line normalization' (the process where the referenced lines' id is normalized to the referenced line actual line number)
could be undo with ctrl-z - Bitwise shifting operators (
<<
and>>
) used wrapping, resulted in unwanted situations. Now it is an error
to use larger shift operands than the underlying integer representation (u64 currently)