github bbodi/notecalc3 v0.3.0

latest release: v0.4.0
3 years ago

[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 img
  • 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 is 5 / year)
    img
  • Automatic closing parenthesis/braces insertion when the opening one is typed
  • Automatic closing parenthesis/braces deletion when the opening one is deleted
    img
  • Automatic parenthesis/braces wrapping around selected text if opening one is typed while
    a text is selected
    img
  • Matching parenthesis are highlighted if the cursor is inside them
    img
  • 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.
    var = 12
    var km
    
    The result of the second line will be 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 string 12 in in in, which is equivalent of 12 inch in inch
    img
  • Percentage calculations
    img
  • 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:
    img
    • 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 to Rc, it was a mistake to use RefCells in the first place.
  • Matrices cannot be deleted anymore by DEL or BACKSPACE, 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)

Don't miss a new notecalc3 release

NewReleases is sending notifications on new releases.