ماژول ها

Ink API ماژولار است، بنابراین می‌توانید فقط از آنچه نیاز دارید استفاده کنید.

سکته مغزی

ماژول strokes به عنوان پایه و اساس Ink API عمل می‌کند. انواع داده‌های کلیدی در این ماژول عبارتند از:

  • StrokeInputBatch : مجموعه‌ای از ورودی‌های اشاره‌گر، شامل موقعیت، زمان و در صورت تمایل، فشار، شیب و جهت آنها را نشان می‌دهد.
  • InProgressStroke : نشان‌دهنده‌ی stroke ای است که به طور فعال در حال ترسیم است. InProgressStroke برای رندر stroke های جزئی با تأخیر کم و ساخت Stroke نهایی پس از تکمیل ورودی استفاده می‌شود، که پس از آن می‌توان از شیء دوباره استفاده کرد. InProgressStroke توسط InProgressStrokes composable استفاده می‌شود.
  • Stroke : یک نمایش تغییرناپذیر از یک stroke نهایی با هندسه ثابت. هر Stroke دارای یک ImmutableStrokeInputBatch (نقاط ورودی)، یک Brush (سبک) و یک PartitionedMesh (شکل هندسی) است. می‌توانید strokeها را در برنامه خود ذخیره، دستکاری و رندر کنید.

هندسه

ماژول Geometry از عملیات هندسی روی اشکال اولیه (با استفاده از کلاس‌های اختصاصی مانند Box و Vec ) و همچنین اشکال دلخواه (با استفاده از PartitionedMesh ) از جمله تشخیص تقاطع و تبدیل پشتیبانی می‌کند. PartitionedMesh همچنین می‌تواند داده‌های اضافی را برای پشتیبانی از رندرینگ در خود نگه دارد.

برس

ماژول brush سبک خطوط را تعریف می‌کند و از دو بخش اصلی تشکیل شده است:

  • Brush : سبک یک خط شامل رنگ پایه، اندازه پایه و BrushFamily را مشخص می‌کند. BrushFamily مشابه خانواده فونت است و سبک یک خط را تعریف می‌کند. برای مثال، یک BrushFamily می‌تواند یک سبک خاص از ماژیک یا هایلایتر را نشان دهد و به خطوط با اندازه‌ها و رنگ‌های مختلف اجازه می‌دهد تا آن سبک را به اشتراک بگذارند.
  • StockBrushes : توابع کارخانه‌ای برای ایجاد نمونه‌های آماده برای استفاده BrushFamily را فراهم می‌کند.

تألیف

ماژول Compose Authoring به شما امکان می‌دهد ورودی لمسی کاربر را ضبط کرده و آن را به صورت حرکات لمسی با تأخیر کم روی صفحه نمایش به صورت بلادرنگ رندر کنید. این امر از طریق Composable InProgressStrokes محقق می‌شود که رویدادهای حرکتی را پردازش کرده و حرکات لمسی را هنگام ترسیم نمایش می‌دهد.

پس از تکمیل یک stroke، composable با استفاده از فراخوانی InProgressStrokesFinishedListener به برنامه کلاینت اطلاع می‌دهد. این به برنامه اجازه می‌دهد تا stroke های تکمیل شده را برای رندر یا ذخیره سازی بازیابی کند.

در Compose، InProgressStrokes این فراخوانی را در پارامتر onStrokesFinished دریافت می‌کند. stroke های تکمیل شده را به یک composable دیگر منتقل کنید تا با استفاده از ماژول رندر ، آنها را به صفحه نمایش اعمال کند.

رندرینگ

ماژول Rendering، ترسیم خطوط جوهر روی Canvas اندروید را ساده می‌کند. این CanvasStrokeRenderer را برای Compose و ViewStrokeRenderer را برای طرح‌بندی‌های مبتنی بر نما فراهم می‌کند. این رندرکننده‌ها عملکرد رندر را بهینه کرده و به ارائه تصاویر با کیفیت بالا، از جمله ضد لبه‌سازی، کمک می‌کنند.

برای رندر کردن strokeها، متد create() را برای دریافت یک نمونه CanvasStrokeRenderer فراخوانی کنید، و سپس متد draw() را برای رندر strokeهای تکمیل‌شده ( Stroke ) یا در حال انجام ( InProgressStroke ) روی یک Canvas فراخوانی کنید.

شما می‌توانید هنگام رسم یک stroke، بوم را تغییر شکل دهید. مثال‌ها شامل panning، zooming و rotation می‌شود. برای رندر صحیح stroke، باید transform canvas را به CanvasStrokeRenderer.draw نیز ارسال کنید.

برای جلوگیری از ردیابی جداگانه‌ی تبدیل canvas ، به جای آن ViewStrokeRenderer استفاده کنید.

ذخیره‌سازی

ماژول ذخیره‌سازی ، ابزارهایی را برای سریال‌سازی و از سریال‌سازی خارج کردن کارآمد داده‌های stroke ارائه می‌دهد که عمدتاً بر StrokeInputBatch تمرکز دارد.

این ماژول از بافرهای پروتکل و تکنیک‌های فشرده‌سازی دلتا بهینه‌شده استفاده می‌کند که منجر به صرفه‌جویی قابل توجه در ذخیره‌سازی در مقایسه با روش‌های ساده می‌شود.

ماژول ذخیره‌سازی، ذخیره، بارگذاری و اشتراک‌گذاری strokeها را ساده می‌کند.