السلام عليكم ورحمة الله وبركاته،
سعدت بالمشاركة في مشروع MushafImad، وهي مكتبة Swift لعرض وقراءة المصحف على iOS/macOS، ضمن حملة «الكود يخدم القرآن». شاركت في حل قضيتين تمت مراجعتهما وقبولهما من صاحب المشروع بعد نقاش تقني ومراجعة للكود.
- إصلاح مشكلة تتبع النظرة (Eye Tracking)
🔗 https://github.com/ibo2001/MushafImad/issues/92
PR: https://github.com/ibo2001/MushafImad/pull/94
كانت مشكلة GazeToVerseMapper أنه يعتمد على قيمة ثابتة لارتفاع السطر تناسب الوضع العمودي فقط، مما تسبب في فشل تحديد الآية عند استخدام الوضع الأفقي. كما أن حساب «أقرب آية» كان يعتمد على مركز الآية بدل أقرب حافة لها.
تم إصلاح ذلك بربط الحسابات باتجاه الصفحة الفعلي وإزاحة التمرير، وتحسين طريقة حساب أقرب آية باستخدام threshold موثق بقيمة 0.25.
النتيجة هي أن منطق تتبع النظرة أصبح يعتمد على نفس القيم التي يستخدمها نظام عرض الصفحة، بدل الاعتماد على افتراضات ثابتة.
- فصل رسم الصفحة عن هندسة الآيات (Render Source Seam)
🔗 https://github.com/ibo2001/MushafImad/issues/68
PR: https://github.com/ibo2001/MushafImad/pull/95
كان QuranPageView مسؤولًا في الوقت نفسه عن رسم الأسطر وحساب مواقع الآيات والتظليل وعناصر الصفحة، مما جعل تغيير طريقة عرض الصفحة يتطلب إعادة بناء جزء كبير من منطق التفاعل.
تم فصل المسؤوليات من خلال إنشاء MushafPageGeometry ليكون المصدر الموحد لحسابات مواضع الآيات، وإضافة MushafRenderSource ليكون مسؤولًا فقط عن رسم الأسطر دون معرفة بتفاصيل الآيات أو التفاعل معها.
كما تم توفير LineImageRenderSource كمصدر العرض الافتراضي، مع الحفاظ على السلوك والمظهر الحاليين.
تم التحقق من التغييرات من خلال بناء ناجح و160 اختبارًا ناجحًا مع تطابق النتائج مع الحالة الأصلية، بالإضافة إلى اختبار يدوي على جهاز iPad شمل التظليل والضغط المطول والتفسير.
خضع كلا الطلبين لمراجعة تقنية دقيقة من صاحب المشروع ibo2001، وتم تحسينهما بناءً على ملاحظاته قبل القبول النهائي.
جزاكم الله خيرًا.