القاهرة (رسومات)

كايرو (يُكتب أحيانًا cairo ) هي مكتبة رسومات مفتوحة المصدر توفر واجهة برمجة تطبيقات (API) تعتمد على الرسومات المتجهة ، ومستقلة عن الجهاز، للرسم ثنائي الأبعاد. مكتوبة بلغة C ، وتدعم الإخراج إلى العديد من الواجهات الخلفية، بما في ذلك X11 و Quartz وWin32 و SVG و PDF و PostScript . تستخدم كايرو تسريع الأجهزة عند توفره. [ 5 ]

تُستخدم مكتبة Cairo من قِبل GTK (الإصدارات من 2.8 إلى 3.x)، ومحرك تخطيط Gecko في متصفح Mozilla Firefox ، وWebKit ، و Poppler ، و Inkscape ، بالإضافة إلى مشاريع أخرى. [ 6 ] المكتبة مرخصة بترخيص مزدوج بموجب رخصة جنو العمومية الصغرى الإصدار 2.1 ورخصة موزيلا العامة الإصدار 1.1.

يستمد الاسم من الاسم الأصلي للمشروع "Xr"، والذي يُفسر على أنه الحرفان اليونانيان chi و rho ، واللذان يُنطقان معًا مثل "Cairo"، ولا ينبغي الخلط بينهما وبين Chi Rho الدينية . [ 7 ]

تاريخ

أنشأ كيث باكارد وكارل وورث المشروع لاستخدامه في نظام X Window ، وأطلقوا عليه في البداية اسم Xr (ثم Xr/Xc ). [ 2 ] تم تغيير الاسم في يوليو 2003 للتأكيد على أن المكتبة متعددة المنصات وليست مرتبطة بنظام X11. [ 8 ]

صدرت كايرو 1.0 في عام 2005، موفرةً واجهة برمجة تطبيقات مستقرة. أضاف الإصدار 1.2 (2006) دعمًا لملفات PDF وSVG. حسّن الإصدار 1.4 (2007) معالجة الخطوط وأضاف واجهة cairo_push_groupبرمجة تطبيقات للعرض خارج الشاشة. قدّم الإصدار 1.10 (2010) سطح التسجيل، الذي يلتقط عمليات الرسم لإعادة تشغيلها لاحقًا، بالإضافة إلى cairo_regionواجهة برمجة التطبيقات. [ 5 ]

في عام 2022، أُزيلت العديد من الأنظمة الخلفية القديمة، بما في ذلك BeOS وOS/2 وDirectFB وواجهة OpenGL الخلفية (التي كانت غير نشطة لعقد من الزمان). [ 9 ] [ 10 ]

اعتمدت مكتبة GTK مكتبة Cairo للرسم في الإصدار 2.8 (2005)، واستخدمت مكتبة GTK 3.0 (2011) مكتبة Cairo لجميع عمليات الرسم. وانتقلت مكتبة GTK 4 (2020) إلى استخدام مُحركي الرسم Vulkan وOpenGL عبر GSK، مما قلل من دور مكتبة Cairo. [ 11 ]

بنيان

نموذج الرسم

نموذج الرسم في القاهرة

تستخدم القاهرة نموذج رسم ثلاثي الطبقات يعتمد على تركيب بورتر-داف :

  1. يتم إنشاء القناع من عناصر متجهة أولية (مسارات، مستطيلات، رموز، منحنيات بيزير ) .
  2. يوفر المصدر بيانات اللون، والتي قد تكون لونًا ثابتًا، أو تدرجًا لونيًا، أو نمطًا نقطيًا، أو سطحًا آخر .
  3. يتم رسم المصدر من خلال القناع على سطح الوجهة ، والذي يمثل الواجهة الخلفية للإخراج. [ 5 ]

يختلف هذا النهج عن الرسومات المتجهة القابلة للتوسيع (SVG)، التي تربط سمات النمط مباشرة بالأشكال. [ 12 ]

الخوادم الخلفية

يدعم تطبيق Cairo الإخراج إلى عدة واجهات خلفية ("أسطح"):

أُزيلت الواجهات الخلفية القديمة لأنظمة BeOS و OS/2 و DirectFB و OpenGL (مباشرةً وعبر glitz) في الفترة 2022-2023. [ 9 ] [ 10 ] وتم تطوير واجهات خلفية تجريبية لأنظمة OpenVG ، [ 13 ] و Qt ، [ 14 ] و Skia ، [ 15 ] و Direct2D . [ 16 ]

روابط اللغة

توجد روابط للغات C++ و C# ولغات سطر الأوامر الأخرى ، و Delphi و Haskell و Julia و Lua و Perl و PHP و Python و Ruby و Rust و Scheme و Smalltalk . [ 17 ]

تخطيط نصي معقد

يدعم برنامج Cairo الخطوط اللاتينية والصينية واليابانية والكورية، ولكنه لا يدعم مباشرةً نصوص التنسيق المعقدة التي تتطلب تشكيل الأحرف. يوصي المطورون باستخدام Pango للنصوص المعقدة، والذي يتكامل مع Cairo لعرضها. [ 18 ]

برنامج يستخدم القاهرة

مثال

برنامج بسيط يقوم بإنشاء ملف SVG باستخدام Cairo:

صورة SVG تم إنشاؤها بواسطة هذا المثال
#include <cairo-svg.h>#include <stdio.h>int main ( int argc , char ** argv ) {cairo_surface_t * surface = cairo_svg_surface_create ( "Cairo_example.svg" , 100.0 , 100.0 );cairo_t * cr = cairo_create ( surface );/* ارسم المربعات في الخلفية */for ( int x = 0 ; x < 10 ; ++ x )for ( int y = 0 ; y < 10 ; ++ y )cairo_rectangle ( cr , x * 10.0 , y * 10.0 , 5 , 5 );cairo_pattern_t * pattern = cairo_pattern_create_radial ( 50 , 50 , 5 , 50 , 50 , 50 );cairo_pattern_add_color_stop_rgb ( pattern , 0 , 0.75 , 0.15 , 0.99 );cairo_pattern_add_color_stop_rgb ( pattern , 0.9 , 1 , 1 , 1 );cairo_set_source ( cr , pattern );cairo_fill ( cr );/* الكتابة في المقدمة */cairo_set_font_size ( cr , 15 );cairo_select_font_face ( cr , "Georgia" , CAIRO_FONT_SLANT_NORMAL , CAIRO_FONT_WEIGHT_BOLD );cairo_set_source_rgb ( cr , 0 , 0 , 0 );cairo_move_to ( cr , 10 , 25 );cairo_show_text ( cr , "Hallo" );cairo_move_to ( cr , 10 , 75 );cairo_show_text ( cr , "ويكيبيديا!" );cairo_destroy ( cr );cairo_surface_destroy ( surface );}

انظر أيضاً

مراجع

  1. "صفحات كارل المملة على الإنترنت" . cworth.org . 2013. تم الاطلاع عليه في 11 يوليو 2014 .
  2. 1 2 "Xr: عرض الرسومات المتجهة عبر الأجهزة" . تم الاطلاع عليه في 8 يونيو 2009 .
  3. "cairo-1.18.4" . www.cairographics.org . تم الاطلاع عليه بتاريخ 12 مارس 2025 .
  4. "cairo/cairo" . GitLab (freedesktop.org) . تم الاطلاع عليه بتاريخ 10 مارس 2026 .
  5. 1 2 3 "الصفحة الرئيسية للقاهرة" . تم الاطلاع عليها في 30 أكتوبر 2010 .
  6. "GTK+ ستستخدم محرك Cairo Vector" . 5 فبراير 2005. تم الاطلاع عليه في 27 ديسمبر 2009 .
  7. "سلسلة رسائل بريدية حول تغيير اسم القاهرة" . 12 يوليو 2003. تم الاطلاع عليه في 2 ديسمبر 2006 .
  8. "سلسلة رسائل بريدية حول تغيير اسم القاهرة" . 15 يوليو 2003. تم الاطلاع عليه في 8 يونيو 2009 .
  9. 1 2 لارابيل، مايكل (27 فبراير 2022). "مكتبة رسومات القاهرة تتخلى عن العديد من الواجهات الخلفية القديمة" . فورونيكس . تم الاسترجاع في 5 يونيو 2022 .
  10. 1 2 لارابيل، مايكل (29 يناير 2023). "مكتبة كايرو للرسومات تتخلى عن دعم OpenGL بعد عقد من الخمول" . فورونيكس . تم الاسترجاع في 7 فبراير 2025 .
  11. 1 2 فريق تطوير GTK. "Gtk -- 4.0: أسئلة شائعة" . تم الاطلاع عليه في 26 سبتمبر 2025. لم يعد يتم رسم معظم الرسومات في GTK عبر Cairo (بل يتم بدلاً من ذلك بواسطة مُعالجات GL أو Vulkan الخاصة بـ GSK).
  12. "GNOME/librsvg" . GitHub . تم الاسترجاع في 10 مارس 2026 .
  13. أويفيند كولاس (24 يناير 2008). "الإعلان عن الواجهة الخلفية لـ OpenVG" . تم الاطلاع عليه في 12 فبراير 2010 .
  14. فلاديمير فوكيتشيفيتش (6 مايو 2008). "أليس هذا لطيفًا؟" . مؤرشف من الأصل في 9 أبريل 2010. تم الاطلاع عليه في 12 فبراير 2010 .
  15. كريس ويلسون (31 أغسطس 2009). "أشياء رائعة" . تم الاطلاع عليه في 12 فبراير 2010 .
  16. ^ باس شوتن (22 نوفمبر 2009). "Direct2D: عرض الأجهزة للمتصفح" . تم الاسترجاع 12 فبراير، 2010 .
  17. "ربط لغات القاهرة" . تم الاطلاع عليه بتاريخ 16 أبريل 2014 .
  18. "كيف أستخدم بانجو بدلاً من واجهة برمجة تطبيقات النصوص "البسيطة" الخاصة بقاهرة؟" . تم الاطلاع عليه بتاريخ 20 مارس 2024 .
  19. "خارطة طريق Gecko 1.9" . تم الاطلاع عليها بتاريخ 27 ديسمبر 2009 .
  20. "ملاحظات الإصدار 046" . ويكي إنكسكيب . تم الاطلاع عليه في 31 مارس 2008 .
  21. "رسم أحادي" . تم الاطلاع عليه بتاريخ 27 ديسمبر 2009 .
  22. "أ.2 المكتبات والبرامج المفيدة" . تثبيت وإدارة R. تم الاطلاع عليه في 29 يونيو 2025 .
  23. "إعلان عن إصدار Gnuplot 4.4.0" . الصفحة الرئيسية لبرنامج Gnuplot . مؤرشف من الأصل بتاريخ 14 مايو 2011. تم الاطلاع عليه بتاريخ 22 فبراير 2011 .