mobile-ink؛ موتور نقاشی نیتیو برای React Native
خلاصهٔ کاملتر
به گفتهٔ تیم MathNotes، پکیج @mathnotes/mobile-ink همون لایهٔ بوم نقاشیه که از اپ خودشون بیرون کشیده شده و حالا متنباز منتشر شده. اونا میگن از می ۲۰۲۵ دارن روی این موتور کار میکنن و همین الان تو اپ MathNotes روی اپاستور داره کار میکنه. لایسنسش Apache-2.0 هست.
تو معرفی پروژه اومده که هنوز جواب متنباز درستوحسابی برای بومی که یه اپ نوتبرداری جدی لازم داره وجود نداره. یه بوم تنها کافی نیست: دفترچههای طولانی، رد شدن سریع بین صفحهها، تأخیر قلم، زوم، انتخاب، ویرایش شکل، سریالسازی، پیشنمایش و فشار حافظهٔ نیتیو باید همزمان جواب بدن، بدون اینکه ترد جاوااسکریپت از پا دربیاد.
نویسنده مقایسهش هم کرده: PencilKit سطح ink خیلی خوبی روی iOS میده ولی یکپارچگی با React Native، پشتیبانی اندروید، دفترچهٔ پیوسته و page pooling گردن خودته؛ React Native Skia هم ابزار رندر قدرتمندی داره ولی ورودی قلم، مدل استروک، پاککن، انتخاب و فیزیک زوم رو باید بسازی. حرف تیم اینه که mobile-ink دقیقاً از جایی شروع میکنه که این کتابخونههای سطحپایینتر تموم میشن.
از نظر امکانات، رندر نیتیو با MTKView روی iOS و TextureView روی اندروید انجام میشه که پشت هر دو یه موتور Skia مشترک به زبان C++ نشسته. ابزارها شامل قلم، هایلایتر، مداد شمعی، خطاطی، پاککن، انتخاب و تشخیص شکله، و کل دفترچه به شکل JSON سریالسازی و ذخیره میشه. اندروید نسخهٔ اول نیتیو رو داره با رندر GPU روی Ganesh، صفحههای pooled، پیشنمایش، ذخیره و بارگذاری و پسزمینهٔ PDF.
سطح عمومی پکیج چند لایهست: NativeInkCanvas بوم نیتیو سطحپایین، ZoomableInkViewport زوم و پن و ممنتوم، ContinuousEnginePool استخر ثابت موتورها، و InfiniteInkCanvas که پوستهٔ کامل دفترچهٔ پیوستهست:
<InfiniteInkCanvas
ref={canvasRef}
style={{ flex: 1 }}
toolState={toolState}
backgroundType="plain"
fingerDrawingEnabled={false}
/>چون پکیج کد نیتیو Kotlin و C++ و iOS داره، تو Expo Go بالا نمیاد و باید dev-client یا prebuild بزنی؛ بیلد اول اندروید هم که موتور C++ رو کامپایل میکنه یه مدت طول میکشه. برنامهٔ نزدیک تیم هم بهتر کردن مستندات نصب، اضافهکردن نمونههای بیشتر برای ذخیره و بارگذاری، بهبود کارایی transform روی انتخابهای بزرگ و سفتوسختتر کردن اندروید نسخهٔ اوله.
نکات کلیدی:
- موتور ink نیتیو و iOS-first برای React Native، بیرونکشیده از اپ MathNotes
- رندر با Skia/Metal روی iOS و Ganesh روی اندروید، با موتور مشترک C++
- دفترچهٔ پیوسته با استخر ثابت موتورها، زوم، اسکرول ممنتوم و سریالسازی JSON
- ابزارهای قلم، هایلایتر، مداد شمعی، خطاطی، پاککن، انتخاب و تشخیص شکل
- بدون پشتیبانی Expo Go؛ نیاز به dev-client یا prebuild، لایسنس Apache-2.0




