All Projects → ax3l → Lines Are Beautiful

ax3l / Lines Are Beautiful

Licence: gpl-3.0
C++ File API for the reMarkable tablet

Projects that are alternatives of or similar to Lines Are Beautiful

mcloud
Mobile farm ecosystem for Android and iOS devices
Stars: ✭ 32 (-56.16%)
Mutual labels:  tablet
Audiofile
A simple C++ library for reading and writing audio files.
Stars: ✭ 399 (+446.58%)
Mutual labels:  file-format
Ksfl
KSFL - Kreative Structured Format Library
Stars: ✭ 7 (-90.41%)
Mutual labels:  file-format
Ngx Responsive
Superset of RESPONSIVE DIRECTIVES to show or hide items according to the size of the device screen and another features in Angular 9
Stars: ✭ 300 (+310.96%)
Mutual labels:  tablet
Tinyply
🌍 C++11 ply 3d mesh format importer & exporter
Stars: ✭ 358 (+390.41%)
Mutual labels:  file-format
Notekit
A GTK3 hierarchical markdown notetaking application with tablet support.
Stars: ✭ 489 (+569.86%)
Mutual labels:  tablet
MeshIO
CloudCompare plugin for loading COLLADA, glTF, and IFC-SPF 3D models
Stars: ✭ 14 (-80.82%)
Mutual labels:  file-format
Ntrghidra
Fully Featured Nintendo DS Loader for Ghidra
Stars: ✭ 56 (-23.29%)
Mutual labels:  file-format
Termux Archlinux
You can use setupTermuxArch.bash 📲 to install Arch Linux in Termux on Amazon, Android, Chromebook and Windows. https://sdrausty.github.io/termux-archlinux/
Stars: ✭ 384 (+426.03%)
Mutual labels:  tablet
Egjs Flicking
🎠 ♻️ Everyday 30 million people experience. It's reliable, flexible and extendable carousel.
Stars: ✭ 937 (+1183.56%)
Mutual labels:  tablet
Uproot3
ROOT I/O in pure Python and NumPy.
Stars: ✭ 312 (+327.4%)
Mutual labels:  file-format
Espui
A simple web user interface library for ESP32 and ESP8266
Stars: ✭ 330 (+352.05%)
Mutual labels:  tablet
Termuxarch
You can use setupTermuxArch.bash 📲 to install Arch Linux in Amazon, Android, Chromebook and Windows. https://sdrausty.github.io/TermuxArch/docs/install
Stars: ✭ 653 (+794.52%)
Mutual labels:  tablet
Psd.rb
Parse Photoshop files in Ruby with ease
Stars: ✭ 3,092 (+4135.62%)
Mutual labels:  file-format
Json Photoshop Scripting
JSON Photoshop Scripting project: alternative way of scripting Photoshop in JavaScript, based on JSON.
Stars: ✭ 42 (-42.47%)
Mutual labels:  file-format
pattern-lock-js
An android inspired pattern lock in scalable vector graphics and pure javascript
Stars: ✭ 51 (-30.14%)
Mutual labels:  tablet
Kaitai struct formats
Kaitai Struct: library of binary file formats (.ksy)
Stars: ✭ 474 (+549.32%)
Mutual labels:  file-format
Booking Management Dashboard
flutter Booking Management Dashboard responsive (web,mobile,tablet)
Stars: ✭ 69 (-5.48%)
Mutual labels:  tablet
Imbmw
BMW iBus .NET MF SDK and hardware
Stars: ✭ 50 (-31.51%)
Mutual labels:  tablet
Tabletdriver
TabletDriver Download: http://hwk.fi/TabletDriver/TabletDriverV0.2.3.zip
Stars: ✭ 936 (+1182.19%)
Mutual labels:  tablet

Lines Are Beautiful

Build Status develop Doxygen Docs Manual Status Language License

A C++ file API for the reMarkable e-ink tablet.

Warning: The libraries and tools in this project are not (yet) hardened for malicious input. Only process files that you can trust with it!

Dependencies

  • A C++11 capable compiler such as
    • GCC 4.8+ (tested)
    • Clang 3.9+ (tested)
  • CMake 3.7+
  • PNGwriter 0.7.0+ (optional for png converts; extend environment variable CMAKE_PREFIX_PATH with its install location)

Install

Spack Package Conan Package Conda Package Docker Image

Spack

spack install rmlab
spack load rmlab

From Source

If one of the popular user-level package managers above is not already satisfying your needs, install from source via:

git clone https://github.com/ax3l/lines-are-beautiful.git

mkdir lines-are-beautiful/build
cd lines-are-beautiful/build

# for own install prefix append: -DCMAKE_INSTALL_PREFIX=$HOME/somepath
cmake ..

make -j

# optional
make test

# sudo is only required for system paths
sudo make install

Usage CLI

Lines Are Beautiful comes with several tools to handle files produced by the tablet. Try them on your own files inside $HOME/.local/share/remarkable/xochitl/ :-)

PNG renderer

This is a small example implementing a renderer for PNG while changing the brush type.

# path to the directory containing the notebook
lines2png share/rmlab/examples/aa90b0e7-5c1a-42fe-930f-dad9cf3363cc
#   creates files "test-0.png", "test-1.png", ... per page in the current directory

Note: this tool depends on an installed PNGwriter dependency.

SVG renderer

This notebook renderer creates a set of SVG files, one for each page. Implementation status:

  • [x] Basic strokes.
  • [x] Initial brush size.
  • [x] Brush color.
  • [x] Highlighter.
  • [x] Normal eraser.
  • [x] Region eraser.
  • [x] Layers.
  • [ ] Brush size variation based on pressure/tilt.
  • [ ] Brush texture.
# path to the directory containing the notebook
lines2svg share/rmlab/examples/e09e6bd4-3647-41e7-98be-b9c3b53d80c8
#   creates files "test-0.svg", "test-1.svg", ... per page in the current directory

Usage API

Set environment hints:

# optional: only needed if installed outside of system paths
export CMAKE_PREFIX_PATH=/your/path/to/installed/path:$CMAKE_PREFIX_PATH

Add to your CMakeLists.txt:

# supports:                     COMPONENTS PNG
find_package(Rmlab 0.1.0 CONFIG)

target_link_libraries(YourTarget PRIVATE Rmlab::Rmlab)

Alternatively, add whole repository directly to your project and add it via:

add_subdirectory("path/to/source/of/lines-are-beautiful")

target_link_libraries(YourTarget PRIVATE Rmlab::Rmlab)

In your C++ files (see Doxygen):

#include <rmlab/rmlab.hpp>
#include <iostream>

// ...

rmlab::Notebook myNotebook("share/rmlab/examples/aa90b0e7-5c1a-42fe-930f-dad9cf3363cc");

for( auto & page : myNotebook.pages )
    for( auto & layer : page.layers )
        for( auto & line : layer.lines )
            for( auto & point : line.points )
                std::cout << point.x << " " << point.y << std::endl;

Resources

Blog Articles, Talks

Experimental Implementation in Rust

Disclaimer

This is a hobby project.

The author(s) and contributor(s) are not associated with reMarkable AS, Norway. reMarkable is a registered trademark of reMarkable AS in some countries. Please see https://remarkable.com for their product.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].