منصوبے کے بارے میں

ICERender (Snowflake Renderer) ایک Canvas 2D انٹرایکٹو گرافکس رینڈرنگ انجن ہے جو خاص طور پر چارٹ ایڈیٹنگ کے منظرناموں کے لیے بنایا گیا ہے۔ README اسے ER ڈایاگرام، فلو چارٹ، اور ٹوپولوجی ڈایاگرام جیسے ایڈیٹرز کے لیے بنیادی رینڈرنگ لیئر کے طور پر پیش کرتا ہے۔ یہ پروجیکٹ TypeScript میں لکھا گیا ہے، جس کے پیکیجز ESM، CJS، اور UMD فارمیٹس میں دستیاب ہیں، اور رن ٹائم میں یہ صرف gl-matrix پر منحصر ہے۔ اہم خصوصیات: - کمپوننٹ ماڈل: React سے متاثر ہو کر، یہ ناقابلِ تبدیلی props اور قابلِ تبدیلی state کے درمیان فرق کرتا ہے، اور render() ٹیمپلیٹ میتھڈ اور کلاس انحصار (inheritance) کا استعمال کرتا ہے۔ ICEGroup لامحدود گہرائی تک نیکسٹڈ (nested) کمپوننٹس کی حمایت کرتا ہے، جس سے ایک کمپوننٹ ٹری بنتا ہے۔ - کوآرڈینیٹ سسٹم اور ٹرانسفارمیشن: gl-matrix کے کالم ویکٹر mat2d کنونشن پر مبنی، یہ ٹرانسلیشن، اسکیلنگ، روٹیشن، اور شیئرنگ کی حمایت کرتا ہے۔ ذیلی کمپوننٹس خود بخود اپنے آباؤ اجداد کی ٹرانسفارمیشنز کو شامل کرتے ہیں، اور localToGlobal/globalToLocal دو طرفہ تبدیلی فراہم کرتے ہیں۔ - ایونٹس اور انٹرایکشن: W3C جیسے ایونٹ سسٹم (on/off/once/trigger) کا نفاذ، جو ماؤس اور کی بورڈ ایونٹس، ڈریگ اینڈ ڈراپ، باکس سلیکشن، ملٹی سلیکشن، اور سلیکشن کے بعد روٹیشن/اسکیلنگ ہینڈلز کی حمایت کرتا ہے۔ - کنکشن لائنز: Visio طرز کی کنکشن لائنز فراہم کرتا ہے، جن کے اینڈ پوائنٹس کمپوننٹ کے اوپر، دائیں، نیچے، بائیں اور مرکز کے پانچ سلاٹس سے منسلک ہو سکتے ہیں، تاکہ کمپوننٹس کے درمیان تعلقات قائم کیے جا سکیں۔ - سیریلائزیشن اور اینیمیشن: کمپوننٹ ٹری کو JSON اسٹرنگ میں تبدیل (serialize) اور بغیر کسی نقصان کے واپس حاصل (deserialize) کیا جا سکتا ہے۔ کسٹم کمپوننٹس کو registerType() کے ذریعے رجسٹر کیا جاتا ہے۔ اینیمیشن کنفیگریشن CSS keyframes سے ملتی جلتی ہے، جس میں لینیئر، ease-in، اور ease-out جیسے ایزنگ (easing) شامل ہیں۔ - کارکردگی اور انجینئرنگ: README کے مطابق، یہ ڈرٹی مارکنگ اور فل ری ڈرا ماڈل استعمال کرتا ہے، جس کے ساتھ رینڈرنگ کیو کیشنگ اور میٹرکس زیرو ایلوکیشن شامل ہے۔ bench/render.cjs کے مطابق 5000 گرافک primitives کی اسٹیٹک ری ڈرا پروسیسنگ تقریباً 0.8ms/فریم ہے (صرف انجن JS لاجک، راسٹرائزیشن کے بغیر)۔ انجینئرنگ میں 46 Jest یونٹ ٹیسٹ، Playwright golden-image ویژول ریگریشن، eslint، GitHub Actions CI اور آرکیٹیکچر ڈیزائن دستاویزات شامل ہیں۔ - مثالیں اور دستاویزات: docs/architecture/ میں رن ٹائم لنک، کمپوننٹ ماڈل، کوآرڈینیٹ سسٹم، رینڈرنگ پرفارمنس، ایونٹس، سیریلائزیشن، اور انٹرایکٹو اینیمیشنز کی تفصیلات موجود ہیں۔ examples/ میں 49 براؤزر مثالیں فراہم کی گئی ہیں۔ سیکنڈری ڈویلپمنٹ کے حوالے سے، README میں ice-entity-designer کے کنکشن کمپوننٹ کی مثال دے کر بتایا گیا ہے کہ کس طرح ICEVisioLink جیسی انجن کلاسز سے وراثت لے کر کسٹم گرافکس بنائے جا سکتے ہیں۔ ice-entity-designer ایک ER ڈایاگرام ڈیزائنر ہے جو ICERender پر مبنی ہے اور اسے craft-codeless-designer لو-کوڈ پروجیکٹ میں استعمال کیا گیا ہے۔ اس کا لائسنس MIT ہے۔