X PixMap
X PixMap ( XPM ) هو تنسيق ملفات صور يستخدمه نظام X Window ، تم إنشاؤه عام 1989 بواسطة دانيال داردايلر وكولاس ناهابو اللذين كانا يعملان في مركز بول للأبحاث في صوفيا أنتيبوليس ، فرنسا، وتم تحسينه لاحقًا بواسطة أرنو لو هورس. [ 2 ] [ 3 ]
يُستخدم هذا البرنامج بشكل أساسي لإنشاء صور بكسلية للأيقونات ، ويدعم البكسلات الشفافة . وهو مشتق من صيغة XBM السابقة ، وهو عبارة عن ملف نصي عادي بصيغة XPM2 أو بصيغة لغة البرمجة C ، ويمكن تضمينه في ملف برنامج C. [ 2 ]
تاريخ
XPM1
يُعدّ تنسيق XPM الأول (1989) مشابهًا نسبيًا لتنسيق XBM. [ أ ] بالمقارنة مع XBM، يستخدم XPM تعريفات ماكرو ومتغيرات إضافية للألوان المفهرسة، ويستبدل البتات بأحرف لوصف الصورة. فيما يلي صورة بالأبيض والأسود بتنسيق XPM لعام 1989.
#define XFACE_format 1 #define XFACE_width 48 #define XFACE_height 48 #define XFACE_ncolors 2 #define XFACE_chars_per_pixel 1 static char * XFACE_colors [] = { "a" , "#ffffff" , "b" , "#000000" }; static char * XFACE_pixels [] = { "abaabaababaaabaababaabaabaabaabaabaabaabaabaaab" ، // وهكذا لمدة 48 صفًا بـ 48 بكسلXPM2
يُبسّط XPM2 (1990) التنسيق بإزالة جميع أكواد لغة C. [ ب ] [ ج ] يتم تبسيط البنية إلى
! XPM2 <القيم> <الألوان> <بكسل> <إضافات اختيارية>
- يصف قسم القيمة الأبعاد الكلية للصورة بشكل مشابه للبيانات
#define. - يُحدد قسم الألوان القيم، ومفهومًا جديدًا لـ "نوع" اللون. قد تكون الأنواع c للدلالة على "اللون"، و m للدلالة على "الإخراج أحادي اللون"، و g للدلالة على "تدرج الرمادي"، و s للدلالة على "الرمزي"، مما يشرح وظيفة اللون المحدد.
- تبقى وحدات البكسل والامتدادات الاختيارية كما هي في التنسيق الأصلي.
يصبح الملف أعلاه، بعرض 48 وارتفاع 4 ولونين وحرف واحد لكل بكسل، كالتالي:
! XPM2 48 4 2 1 ac.FFFFFF bc000000 اباباباباباباباباباباباباابابابااب اباباباباباباباباباباباباابابابااب اباباباباباباباباباباباباابابابااب اباباباباباباباباباباباباابابابااب
الألوان
بالإضافة إلى رموز الألوان السداسية العشرية، يمكن أن تكون الألوان أيًا من أسماء ألوان X11 . كما Noneيشير الرمز إلى الشفافية. [ 4 ] [ 5 ]
تتيح خاصية "الرمزية" تعديل الألوان حسب السياق الذي تُستخدم فيه. على سبيل المثال، s border c blueيمكن تعديل الكود على خلفية زرقاء.
ترميز متعدد الألوان
من المعروف أن إحدى الأدوات تستخدم فقط من a إلى p لـ 16 لونًا، وتتحول إلى aa حتى dp لـ 64 لونًا، ولكنها لا تزال تقرأ ترميزات الأحرف المفردة لـ 64 لونًا؛ قارن Base64 .
مع زيادة عدد الألوان، تستخدم الرموز عددًا أكبر من الأحرف، على سبيل المثال، من aa إلى pp لـ 16 × 16 = 256 لونًا. هذا أقل فائدة لمحررات النصوص، لأن السلسلة ab قد تكون في الواقع منتصف بكسلين متجاورين dabc . يُسمح باستخدام المسافات كرموز للألوان، ولكن قد يكون ذلك غير مستحسن حسب محرر النصوص المستخدم. بدون رموز التحكم، والشرطة المائلة العكسية، وعلامة الاقتباس (المطلوبة في XPM1 وXPM3)، يتوفر 128 - 33 - 2 = 93 حرفًا من ASCII لرموز الألوان المكونة من حرف واحد.
مثال مبسط: يمكن ترتيب 90 حرفًا من أحرف ASCII الأمريكية في تسع مجموعات غير متداخلة، كل مجموعة تتكون من 10 أحرف. وبالتالي، يمكن لسلاسل غير مبهمة مكونة من تسعة أحرف تحديد لون كل بكسل بواسطة فهرس لوحة ألوان XPM الخاص به، بحد أقصى 10 .1,000,000,000 لون (مقارنة بـ GIF ، الذي يدعم 256 لونًا فقط).
بالنسبة لـ XPM2، من الواضح عدد الأسطر التي تنتمي إلى الصورة - سطران رئيسيان، السطر الرئيسي الثاني يعلن عدد رموز الألوان (سطران في المثال أعلاه) والصفوف (ارتفاع 4 في المثال أعلاه)، على سبيل المثال 2 + 2 + 4 = 8 أسطر.
XPM3
التنسيق الحالي والأخير هو XPM3 (1991). يعيد هذا التنسيق استخدام غلاف C، ولكن بدلاً من عرض بنية الملف بشكل صريح، فإن السلاسل المخزنة فيه مطابقة بشكل أساسي لـ XPM2.
/* XPM */ static char * XFACE [] = { "48 4 2 1" , "ac #ffffff" , "bc #000000" , "abaabaababaaabaabababaabaabaababaabaaababaabaaab" , "abaabaababaaabaabababaabaabaababaabaaababaabaaab" , "أبابابابااباباباباباباباباباباباباباب" , "اباباباباابااباباباباباباباباباباباب" };إذا احتوى سطر "القيم" على ستة أرقام بدلاً من أربعة، فإن القيم الإضافية تشير إلى إحداثيات "نقطة تفاعلية"، حيث يمثل 0 0 الزاوية العلوية اليسرى لمربع يحتوي على الأيقونة، وهو الإعداد الافتراضي. تُستخدم "النقطة التفاعلية" لمؤشرات الماوس والتطبيقات المشابهة.
مقارنة مع الصيغ الأخرى

يعرض الكود التالي نفس ملف blarg بتنسيقات XBM و XPM و PBM .
إصدار XBM:
#define test_width 16 #define test_height 7 static char test_bits [] = { 0x13 , 0x00 , 0x15 , 0x00 , 0x93 , 0xcd , 0x55 , 0xa5 , 0x93 , 0xc5 , 0x00 , 0x80 , 0x00 , 0x60 };
إصدار XPM2:
! XPM2 16 7 2 1 * ج 000000 . ج #ffffff **..*........... *.*.*........... **..*..**..**..** *.*.*.*.*.*..*.* **..*..**.*...** ...............* .............**.
إصدار XPM3:
/* XPM */ static char * blarg_xpm [] = { "16 7 2 1" , "* c #000000" , ". c #ffffff" , "**..*..........." , "*.*.*..........." , "**..*..**..**" , "*.*.*.*.*.*.*.*" , "**..*..**.*...**" , "...............*" , ".............**." };ملف PBM:
P1 16 7 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
دعم التطبيقات
تدعم برامج ACDSee و Amaya و CorelDRAW و GIMP و ImageMagick و IrfanView (إضافة التنسيقات) و PaintShop Pro و PMView و Photoshop (الإضافات) و XnView ، وغيرها، تنسيق XPM. [ 6 ] [ 7 ] كما يدعم Gravatar تنسيق XPM أيضًا. [ 8 ] [ 9 ]
تم إصلاح ثغرة أمنية في مكتبة X11 libXpm في عام 2005، [ 10 ] وثلاث ثغرات أخرى في عام 2023. [ 11 ]
يمكن لبرنامج FFmpeg الإصدار 3.3 أو أحدث فك تشفير XPM. [ 12 ]
انظر أيضاً
ملحوظات
- ↑ للحصول على وصف لهذا التنسيق بدلاً من الدليل (غير الموجود على الإنترنت)، استخدم الكود المصدري لمحول xpm-contrib (الذي كان سابقًا جزءًا من libXpm) (xpm2ppm، xpm1to3، xpm1to2c).
- ↑ من المقبول أيضًا استخدام صيغ لغات البرمجة لمصفوفات السلاسل النصية، ولكن صيغة لغة C هي الصيغة المعتمدة فقط. وفي النهاية، أصبحت صيغة "XPM2 C" هي الصيغة الوحيدة في الإصدار الثالث من XPM.
- ↑ للاطلاع على المراجع المتعلقة بهذا التركيب، انظر https://gitlab.freedesktop.org/xorg/lib/libxpm/-/blob/master/NEWS.old وقسم "التاريخ" في دليل libXpm 3.4.
مراجع
- ↑ نوع MIME .xpm غير مسجل لدى IANA
- 1 2 لو هورس، أرنو (1996/02/01). دليل XPM: تنسيق X PixMap (PDF) . مجموعة الثور . ص 7 – 8 . تم الاسترجاع 2014/01/01 .
- ↑ دانيال داردايلر (15 يوليو 1996). "قصة XPM" . كولاس ناهابو وأرنو لو هورس. مؤرشف من الأصل في 7 يونيو 1997. تم الاطلاع عليه في 1 يناير 2014 .
- ↑ "الأسئلة الشائعة حول XPM" . مؤسسة X.Org . 1996. تم الاطلاع عليه بتاريخ 12-03-2016 .
- ↑ موراي، جيمس د.؛ فانرايبر، ويليام (1996). ملخص تنسيق ملف XPM . أورايلي وشركاؤه. ISBN 1-56592-161-5تم الاطلاع عليه بتاريخ 2014-01-01 .
{{cite book}}تم|work=تجاهله ( مساعدة ) - ↑ نير سوفر. "امتداد .xpm" . تم الاطلاع عليه بتاريخ 12 يناير 2014 .
- ^ "نوع الملف: X Windows Pixmap" . جمعية ملفات ويندوز . مايكروسوفت . 2013 . تم الاسترجاع 2014/01/12 .
- ↑ جرافاتار غير رسمي، لا يدعم XPM2
- ↑ ستيف كينزلر (2005). "أرشيف الأيقونات" . تم الاطلاع عليه بتاريخ 6 يناير 2014.
تتوفر الأيقونات إما بتنسيق XBM أحادي اللون أو بتنسيقات XPM وGIF الملونة.
- ↑ «تحتوي مكتبة libXpm على ثغرات أمنية متعددة تتعلق بتجاوز سعة الأعداد الصحيحة» . US-CERT . 2005-10-06. VU#537878 . تم الاطلاع عليه بتاريخ 2014-01-01 .
- ↑ "إشعار أمني من X.Org: مشاكل في التعامل مع ملفات XPM في libXpm قبل الإصدار 3.5.15" . 2023-01-17.
- ↑ "FFmpeg 3.3 "Hilbert"" . FFmpeg . 2017-04-13 . تم الاسترجاع في 2017-10-28 .
مُفكِّك ترميز XPM
انظر أيضاً
- نظام النوافذ X (X11) وأسماء ألوان X11
- PBM (أحادي اللون)، PGM (تدرج الرمادي)، PPM (ملون)، PNM (أي نوع)
- خريطة نقطية X
روابط خارجية
- تنسيقات ملفات الرسومات
- نظام النوافذ X
- مقدمات متعلقة بالحاسوب في عام 1989
