Skip to content

google/ink

Ink

The Ink library is a freehand stroke generation library. It produces smoothed, modeled stroke shapes with brush effect shaders as mesh-based vector graphics.

How to Build and Test

Bazel

Prerequisites:

Ink can be built and tested from the repo root:

bazel test --config=linux ink/...

Library Structure

Ink consists of a set of modules that can be used separately. You should only need to include the parts of the library that you need.

 ┌──────────┐ ┌───────┐
 │Rendering │ │Storage│
 └────┬─────┘ └──┬────┘
      │          │
      ▼          │
   ┌───────┐     │
   │Strokes│◄────┘
   └─┬────┬┘
     │    │
     │    ▼
     │ ┌────────┐
     │ │Geometry│
     │ └───┬────┘
     │     │
     ▼     ▼
 ┌─────┐ ┌─────┐
 │Color│ │Types│
 └─────┘ └─────┘
  • color: color spaces, encoding, and format conversion.
  • types: utility types; time, units, constants, small arrays, URIs.
  • geometry: geometric types (point, segment, triangle, rect, quad), meshes, transforms, utility functons, and algorithms (intersection, envelope).
  • strokes: the primary Stroke data type and InProgressStroke builder.
  • rendering: rendering utilities for strokes. Currently only has support for android.graphics.Mesh based rendering.
  • storage: Protobuf serialization utilities for Stroke and related types.

Contributing

See CONTRIBUTING.md for details on sending a PR.

Contact

Use GitHub Issues to file feedback: https://github.com/google/ink/issues