وحدات

تم تقسيم Ink API إلى وحدات، ما يتيح لك استخدام ما تحتاج إليه فقط.

الضربات

The strokes module serves as the foundation of the Ink API. Key data types within this module are:

  • StrokeInputBatch: Represents a series of pointer inputs, including their position, timestamp, and optionally pressure, tilt, and orientation.
  • InProgressStroke: Represents a stroke that is actively being drawn. InProgressStroke is used to render partial strokes with low latency and to build the final Stroke once input is complete, after which the object can be reused. InProgressStroke is used by the InProgressStrokes composable.
  • Stroke: An immutable representation of a finalized stroke with fixed geometry. Each Stroke has an ImmutableStrokeInputBatch (input points), a Brush (style), and a PartitionedMesh (geometric shape). You can store, manipulate, and render strokes within your application.

هندسة

يتيح نموذج Geometry إجراء عمليات هندسية على الأشكال الأساسية (باستخدام فئات مخصّصة مثل Box وVec)، بالإضافة إلى الأشكال العشوائية (باستخدام PartitionedMesh)، بما في ذلك رصد التقاطع والتحويل. يمكن أن يحتوي PartitionedMesh أيضًا على بيانات إضافية للمساعدة في العرض.

فرشاة

يحدّد الوحدة brush نمط الخطوط. ويتألف من جزأين رئيسيين:

  • Brush: تحدّد هذه السمة نمط الخط، بما في ذلك اللون الأساسي والحجم الأساسي وBrushFamily. BrushFamily مشابهة لمجموعة خطوط، فهي تحدد نمطًا للسكتة الدماغية. على سبيل المثال، يمكن أن يمثّل BrushFamily نمطًا معيّنًا من أقلام التحديد أو أقلام التمييز، ما يتيح مشاركة هذا النمط مع ضربات بأحجام وألوان مختلفة.
  • StockBrushes: توفّر هذه السمة دوال مصنع لإنشاء مثيلات BrushFamily جاهزة للاستخدام.

التأليف

تتيح لك وحدة إنشاء في Compose تسجيل بيانات اللمس التي يُدخلها المستخدم وعرضها كضربات على الشاشة بزمن استجابة منخفض في الوقت الفعلي. ويتم تحقيق ذلك من خلال العنصر القابل للإنشاء InProgressStrokes الذي يعالج أحداث الحركة ويعرض ضربات القلم أثناء رسمها.

بعد إكمال ضربة، تُعلم الدالة البرمجية القابلة للإنشاء تطبيق العميل باستخدام ردّ الاتصال InProgressStrokesFinishedListener. يسمح هذا الإذن للتطبيق باسترداد الضربات المنتهية لعرضها أو تخزينها.

في Compose، تأخذ InProgressStrokes دالة رد الاتصال هذه في المَعلمة onStrokesFinished. مرِّر اللمسات النهائية إلى عنصر آخر قابل للإنشاء لتثبيتها على الشاشة باستخدام وحدة العرض.

العرض

تسهّل وحدة Rendering رسم ضربات الحبر على Canvas يعمل بنظام التشغيل Android. توفّر هذه السمة CanvasStrokeRenderer لإنشاء التنسيقات وViewStrokeRenderer للتنسيقات المستندة إلى العرض. تعمل أدوات العرض هذه على تحسين أداء العرض وتساعد في تقديم صور عالية الجودة، بما في ذلك التنعيم.

لعرض ضربات الفرشاة، استدعِ طريقة create() للحصول على مثيل CanvasStrokeRenderer، ثم استدعِ طريقة draw() لعرض ضربات الفرشاة المكتملة (Stroke) أو الجاري تنفيذها (InProgressStroke) على Canvas.

يمكنك تغيير شكل لوحة العرض عند رسم خط. وتشمل الأمثلة تحريك الكاميرا أفقيًا أو عموديًا وتكبير الصورة وتدويرها. لعرض الضربة بشكل صحيح، يجب أيضًا تمرير عملية التحويل canvas إلى CanvasStrokeRenderer.draw.

لتجنُّب تتبُّع عملية التحويل canvas بشكل منفصل، استخدِم ViewStrokeRenderer بدلاً من ذلك.

مساحة التخزين

The storage module provides utilities for efficiently serializing and deserializing stroke data, primarily focusing on StrokeInputBatch.

The module uses protocol buffers and optimized delta compression techniques, resulting in significant storage savings compared to naive methods.

The storage module simplifies saving, loading, and sharing strokes.