scenic v0.10.0 Release Notes

Release Date: 2019-03-26 // over 3 years ago
  • v0.10.0 of Scenic.

    • Integration of font metrics
      • Buttons, checkboxes, radios, etc can be auto-sized to fix their text
      • FontMetrics can be used to measure strings, trim to fit, and more
    • Much improved error handling when a scene crashes during its init phase. Instead of quickly
      restarting the scene over and over, it now goes to an error scene that displays debug info.
      ๐Ÿ’ป Also displays that info in the command line.
    • โ†” Integrated spec-based graphs from @pragdave. This is a cleaner looking way to build graphs.
      ๐Ÿ‘€ See the changes in primitives.ex
    • PR to fix delete the children of a group when the group itself is deleted. Thanks to
      Chris Boebel. @cboebel
    • ๐Ÿ‘Œ Improve building the C products. PR #126 - @fhunleth
    • โž• Added a :parser option to Cache.File.read/load to allow custom interpreters
    • โž• Added a ViewPort.reset() function (used by the error scene), which can be used to send
      a ViewPort back to the original scene it was started with.
    • ๐Ÿ‘ Dynamic Textures in the form of raw pixel maps are now supported. This should allow you
      to capture raw images off of a camera and display them without encoding/decoding
    • leading spaces in a text primitive are now rendered
    • โšก๏ธ Scene callbacks are all updated to support the OTP 21+ callback returns.
    • Scenes now have the terminate callback.

    ๐Ÿ—„ Deprecations

    ๐Ÿ—„ push_graph/1 is deprecated in favor of returning {:push, graph}
    (keyword) options
    ๐Ÿ—„ from the Scenic.Scene callbacks. Since this is only a deprecation push_graph/1 will
    โš  continue to work, but will log a warning when used.

    ๐Ÿš€ push_graph/1 will be removed in a future release.

    • This allows us to utilize the full suite of OTP GenServer callback behaviors (such as
      โฑ timeout and handle_continue)
    • Replacing the call of push_graph(graph) within a callback function depends slightly
      on the context in which it is used.
    • in init/2:
      • {:ok, state, [push: graph]}
    • in filter_event/3:
      • {:halt, state, [push: graph]}
      • {:cont, event, state, [push: graph]}
    • in handle_cast/2:
      • {:noreply, state, [push: graph]}
    • in handle_info/2:
      • {:noreply, state, [push: graph]}
    • in handle_call/3:
      • {:reply, reply, state, [push: graph]}
      • {:noreply, state, [push: graph]}
    • in handle_continue/3:
      • {:noreply, state, [push: graph]}

    ๐Ÿ’ฅ Breaking Changes

    ๐Ÿšš Scenic.Cache has been removed. It has been replaced by asset specific caches.

    Asset Class Module
    Fonts Scenic.Cache.Static.Font
    Font Metrics Scenic.Cache.Static.FontMetrics
    Textures (images in a fill) Scenic.Cache.Static.Texture
    Raw Pixel Maps Scenic.Cache.Dynamic.Texture

    ๐Ÿšš Some of the Cache support modules have moved

    Old Module New Module
    ๐Ÿ‘ Scenic.Cache.Hash
    ๐Ÿ‘ Scenic.Cache.File
    ๐Ÿ‘ Scenic.Cache.Supervisor