Modules

L'API Ink étant modularisée, vous ne pouvez utiliser que ce dont vous avez besoin.

Traits

Le module Trait sert de base à la bibliothèque Ink et offre les fonctionnalités interface API principale et contenant les principaux types de données permettant d'interagir avec la bibliothèque. Les principaux types de données de ce module sont les suivants:

  • StrokeInputBatch : représente une série d'entrées de pointeur, incluant la position, le code temporel et éventuellement la pression, l'inclinaison et l'orientation. Ces données peuvent être utilisées avec le Stroke ou InProgressStroke et le type qui fournirait les entrées pour une écriture manuscrite bibliothèque de reconnaissance.
  • Stroke : représentation immuable d'un trait finalisé avec une géométrie fixe. Le trait comprend une ImmutableStrokeInputBatch (points d'entrée), un Brush (style) et PartitionedMesh (forme géométrique). Les traits peuvent être stockés, manipulés et affichés dans votre application.
  • InProgressStroke : homologue modifiable de Stroke, conçu pour la gestion incrémentielle des entrées et le rendu en temps réel pendant le processus de dessin. Bien qu'ils soient souvent utilisés indirectement via InProgressStrokesView, InProgressStroke directement pour une personnalisation avancée.

Géométrie

Le module Géométrie fournit une suite de primitives géométriques pour les fonctions basiques et complexes ainsi que les opérations de détection et de transformation des intersections. Ces primitives s'intègrent parfaitement aux traits d'encre, ce qui vous permet de créer des fonctionnalités telles que des gommes pour les traits entiers et des outils de sélection par cadre.

Bien que des classes telles que Box et Vec facilitent principalement les opérations géométriques, PartitionedMesh peut également inclure des données spécifiques au rendu.

Pinceau

Module Pinceau sert de configuration déclarative pour la création et l'affichage des traits, fonctionne comme une police de texte. Un objet Brush possède les propriétés suivantes :

  • Couleur: il peut s'agir d'une couleur unie ou de la base de plusieurs effets à superposer. et des textures.
  • Taille: elle peut être fixe ou servir de base pour des ajustements de taille dynamiques.
  • Famille : comme pour une police de texte, la famille définit le style général du trait.
  • Epsilon : contrôle le niveau de détail de la géométrie vectorielle du trait, qui représente la plus petite unité de distinction visuelle.

La propriété epsilon joue un rôle crucial dans la définition de la précision de votre système de coordonnées. Pour savoir comment choisir une valeur d'épsilon appropriée, consultez la section API de pinceau.

Le BrushFamily sert de une configuration puissante pour créer des traits expressifs une géométrie complexe ou un code de rendu. Cette bibliothèque fournit un ensemble StockBrushes, y compris un stylo, surligneur et marqueur sensibles à la pression.

Création

Le module Authoring permet aux développeurs de capturer les entrées tactiles de l'utilisateur et de les afficher sous forme de traits à faible latence sur l'écran en temps réel. Pour ce faire, vous devez utiliser la classe InProgressStrokesView, qui traite les événements de mouvement et visualise les traits à mesure qu'ils sont dessinés.

Une fois un trait terminé, le module en informe l'application cliente à l'aide du rappel onStrokesFinished() de InProgressStrokesFinishedListener. Le rappel permet à l'application de récupérer les données de trait finalisées pour l'affichage ou le stockage.

Affichage

Le module de rendu simplifie le processus de dessin de traits d'encre sur un Canvas Android. Le module fournit un CanvasStrokeRenderer pour Compose et un ViewStrokeRenderer pour les mises en page basées sur les vues, qui optimisent tous deux les performances de rendu et garantissent des visuels de haute qualité, y compris l'anticrénelage.

Pour afficher des traits sur un canevas, obtenez un CanvasStrokeRenderer à l'aide de la méthode create() . Utilisez ensuite la méthode draw() pour afficher des traits terminés ou en cours sur un canevas.

Vous pouvez transformer le canevas (panoramique, zoom ou rotation) lors du dessin du trait, mais pour vous assurer que le trait est bien dessiné à l'écran, le appliquée au canevas doivent également être transmises à CanvasStrokeRenderer#draw() Pour éviter d'avoir à le suivre séparément, utilisez plutôt ViewStrokeRenderer.