Giter VIP home page Giter VIP logo

embedded-graphics-sparklines's Introduction

Contributors Forks Stargazers Issues Build Status MIT License LinkedIn


Embedded graphics logo

Sparklines for Rust's Embedded-graphics

Visual demo on simulator

Sparklines are small, high resolution graphics embedded in a context of words, numbers or images". Edward Tufte describes sparklines as "data-intense, design-simple, word-sized graphics".
Explore the docs »

Rust Crate · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Quickstart
  4. Roadmap
  5. License
  6. Contact
  7. Acknowledgments

About The Project

This library is a Rust implementation of ESParklines library which is extemely useful for creating real-time graphs for use with small embedded systems screeens.

This library is designed to be as simple as possible. It is responsible for:

  • holding a buffer of pre-defined size of numeric data type
  • renders sparklines using a passed-in function to draw lines
  • is display-driver independent as you can provide any drawing function
  • works with embedded-graphics simulator so you can quickly iterate on you dev machine

(back to top)

Built With

(back to top)

Getting Started

Make sure you have your rust environment configurated

Installation

  1. Add library to your Cargo.toml

    ...
    [dependencies]
    embedded-graphics-sparklines = "0.1.0"
  2. Use the library in you code

    let mut display: SimulatorDisplay<BinaryColor> = SimulatorDisplay::new(Size::new(240, 135));
    let bbox = Rectangle::new(Point::new(0, 26), Size::new(240, 90));
    let draw_fn = |lastp, p| Line::new(lastp, p);
    
    // create sparkline object
    let mut sparkline = Sparkline::new(
        bbox, // position and size of the sparkline
        32,   // max samples to store in memory (and display on graph)
        BinaryColor::On,
        1, // stroke size
        draw_fn,
    );
    
    let output_settings = OutputSettingsBuilder::new()
        .theme(BinaryColorTheme::OledBlue)
        .build();
    let mut window = Window::new("Sparkline", &output_settings);
    
    loop {
      let val = rand::thread_rng().gen_range(0..100);
      sparkline.add(val);
      sparkline.draw(&mut display)?;
    
      window.update(&display);
      thread::sleep( Duration::from_millis(100);
    }
  3. Experiment and have fun! 😌 See main.rs if you want to run a quick demo.

(back to top)

Quickstart

  1. Make sure you've got cargo set up
  2. Install cargo binary crate to be able to test easily on your computer
    $ cargo install embedded-graphics-sparklines
  3. Run the provided binary example with simulator display
    $ embedded-graphics-sparklines --features build-binary
  4. You should see an output similar to the followig one

demo screenshot

(back to top)

Roadmap

  • add tests
  • add rustdocs
  • CI integration with GithHub Actions
  • better error generation & handling

See the open issues for a full list of proposed features (and known issues).

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Bernard Kobos - @bkobos - [email protected]

Project Link: https://github.com/bernii/embedded-graphics-sparklines

(back to top)

Acknowledgments

  • ESParklines project which this is based on

(back to top)

embedded-graphics-sparklines's People

Contributors

bernii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.