Káhira

Káhira
Typ grafická knihovna [d] aknihovna funkcí
Vývojář Keith Packard , Carl Worth [d] a Behdad Esfahbod [d] [1]
Zapsáno v C [4]
Operační systém GNU/Linux , Microsoft Windows a macOS
Nejnovější verze
Testovací verze
Licence Mozilla Public License 1.1 [d] [5]a LGPL-2.1 [d] [5]
webová stránka cairographics.org
 Mediální soubory na Wikimedia Commons

Cairo  je open source softwarová knihovna pro vykreslování vektorové grafiky . Zahrnuje hardwarově nezávislé aplikační programovací rozhraní pro vývojáře softwaru. Cairo poskytuje grafická primitiva pro vykreslování 2D obrázků prostřednictvím různých backendů . Kdykoli je to možné, Káhira používá hardwarovou akceleraci .

Existuje oficiální návrh standardizace v jazyce C++ pro 2D renderovací API založené na knihovně Cairo [6] .

Architektura softwaru

Jazykové vazby

Jakákoli knihovna napsaná v jednom programovacím jazyce může být použita v jiném, pokud je tzv. propojení programovacích jazyků této knihovny s novým jazykem. Káhira má širokou škálu vazeb programovacích jazyků: C++ , C# a další jazyky kompatibilní s CLI . Existují také vazby Cairo pro Delphi , Factor , Haskell , Lua , Perl , PHP , Python , Ruby , Scheme , Smalltalk a další [7] .

Vazby nástrojů

Vzhledem k tomu, že Káhira je pouze knihovnou pro vykreslování, může být velkým přínosem při integraci s nástroji pro vytváření grafického uživatelského rozhraní :

Dostupné backendy

Káhira funguje na povrchové abstrakci . Povrch je to, na co Káhira maluje. Za tímto povrchem se mohou skrývat různé backendy, které mohou předat výsledek práce v Káhiře do kontextů X Window System , Xlib a XCB , Win32 GDI , OS X Quartz Compositor , BeOS , OS/2 , OpenGL (přímo [10] a přes glitz ), místní vyrovnávací paměť obrázků, soubory PNG , soubory PDF , PostScript , DirectFB a SVG .

Existují další GUI backendy: OpenVG [11] , Qt [12] , Skia [13] a Direct2D [14] .

Vykreslit model

Káhirský model vykreslování zahrnuje tři kroky:

  1. Nejprve se vytvoří maska, která se skládá z vektorových primitiv neboli tvarů. Například kruhy, čtverce, Bezierovy křivky , písma TrueType atd.
  2. Poté musí být definován tzv. zdroj, kterým může být barva, barevný přechod , bitmapa nebo vektorový obrázek. Dále jsou barevné části zdroje vyříznuty pomocí zadané masky.
  3. Poté je výsledek předán na povrch, který je zachycen odpovídajícím backendem.

Tento model vykreslování se zásadně liší od přístupu vykreslování přijatého v SVG .

Příklad

Poměrně složitá grafická varianta oblíbeného Hello World! ” lze implementovat pomocí Káhiry, například takto:

#include <cairo-svg.h> int main ( int argc , char ** argv ) {     cairo_t * cr ;     cairo_surface_t * povrch ;     cairo_pattern_t * vzor ;     int x , y ;     povrch = ( cairo_surface_t * ) cairo_svg_surface_create ( "Cairo_example.svg" , 110,0 , 110,0 );     cr = cairo_create ( povrch );     /* Kreslit čtverce na pozadí */     pro ( x = 0 ; x < 10 ; x ++ )        pro ( y = 0 ; y < 10 ; y ++ )            cairo_rectangle ( cr , x * 10,0 , y * 10,0 , 5 , 5 );     pattern = cairo_pattern_create_radial ( 50 , 50 , 5 , 50 , 50 , 50 );     cairo_pattern_add_color_stop_rgb ( vzor , ​​0 , 0,75 , 0,15 , 0,99 );     cairo_pattern_add_color_stop_rgb ( vzor , ​​0,9 , 1 , 1 , 1 );     cairo_set_source ( cr , vzor );     cairo_fill ( cr );     /* Nakreslete popředí */     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 , "Ahoj," );     cairo_move_to ( cr , 10 , 55 );     cairo_show_text ( cr , "Wikipedie!" );     cairo_destroy ( cr );     cairo_surface_destroy ( povrch );     návrat 0 ; }

Použití

Káhira je populární v komunitě open source pro svou přenositelnost a kvalitní vykreslování 2D obrázků.

  • GTK+ plně podporuje Káhiru. Počínaje rokem 2005 s verzí 2.8 používá GTK+ Cairo k vykreslování většiny grafických ovládacích prvků. Počínaje verzí 3.0 GTK+ obecně kreslí vše přes Káhiru.
  • Projekt Mono [15] , včetně Moonlight [16] , využívá Káhiru.
  • Projekt Mozilla používá Cairo v prohlížeči Gecko [17] . Ve Firefoxu 52 byla zastaralá ve prospěch Direct2D (Windows 10) a Skia (nižší), ale je stále podporována, pokud na ni přejdete přes pokročilá nastavení. Od té doby byla podpora Firefoxu 66 zcela odstraněna [18] .
  • Framework WebKit používá Cairo k vykreslování na porty GTK+ a EFL . Byla také přidána podpora Cairo pro vykreslování grafiky SVG a pro obsah tagu <canvas>.
  • Knihovna Poppler používá Káhiru k vykreslování dokumentů PDF. Káhira se používá k vytváření hladké vektorové grafiky a průhledných objektů.
  • Editor vektorové grafiky Inkscape používá Cairo.
  • Operační systém MorphOS 2.5 používá Cairo.
  • Operační systém AmigaOS 4.1 podporuje knihovnu sdílených objektů Cairo (libcairo.so) ve výchozí instalaci.
  • Výchozí editor písem FontForge používá Káhiru od poloviny října 2008.
  • Programovací jazyk R umožňuje výstup grafiky do formátů PDF , PostScript a SVG pomocí Cairo.
  • Gnuplot 4.4 používá Káhira pro renderování do PDF a PNG [19] .
  • Webový prohlížeč PlayStation 3 používá Cairo od verze aktualizace systému 4.10.
  • Synfig 0.64 nyní volitelně podporuje vykreslování obrázků přes Káhiru.
  • Program pro sledování a vizualizaci výkonu počítačového systému Graphite je schopen vykreslovat grafy přes Káhiru.
  • Platforma 1C:Enterprise 8.3 počínaje verzí 8.3.16 používá pro vykreslování Cairo [20] .

Historie

Keith Packard a Carl Worth založili káhirský projekt pro použití v systému X Window [21] . Zpočátku (alespoň do roku 2003) se projekt jmenoval Xr nebo Xr/Xc . Název byl změněn, aby zdůraznil myšlenku, že knihovna je přenosná se schopností přístupu k libovolnému zobrazovacímu serveru , nejen vázanému na X Window System [22] .

Název Káhira pochází z původního názvu Xr , interpretovaného řeckými písmeny χ a ρ [23] .

Viz také

  • Zobrazit PostScript
  • Grafický
  • Starling
  • WebGL

Poznámky

  1. https://gitlab.freedesktop.org/cairo/cairo/-/graphs/master
  2. https://www.cairographics.org/news/cairo-1.16.0/
  3. Uvolněte snímek 1.17.6
  4. Káhirský projekt Open Source na Open Hub: Stránka jazyků - 2006.
  5. 1 2 https://web.archive.org/web/20180224092509/https://www.cairographics.org/
  6. Michael B. McLaughlin; Herb Sutter, Jason Zink. Návrh na přidání vykreslování a zobrazení 2D grafiky do C++ Revize 2 . Otevřené standardy (3. července 2014). Získáno 12. září 2014. Archivováno z originálu 12. září 2014.
  7. Káhirské jazykové vazby . Získáno 16. dubna 2014. Archivováno z originálu 17. května 2011.
  8. Fedor, Adam Přehled uživatelských výchozích nastavení pro GNUstep Backend (29. září 2011). Získáno 3. listopadu 2014. Archivováno z originálu dne 26. března 2014.
  9. Káhira - SDL (17. února 2009). Získáno 3. listopadu 2014. Archivováno z originálu dne 2. října 2014.
  10. Chris Wilson. Sloučen nový backend OpenGL (22. července 2009). Získáno 12. února 2010. Archivováno z originálu 24. července 2011.
  11. Øyvind Kolås. Oznamujeme backend OpenVG (24. ledna 2008). Získáno 12. února 2010. Archivováno z originálu 16. dubna 2009.
  12. Vladimír Vukičevič. Well Is't That Qt (odkaz není k dispozici) (6. května 2008). Získáno 12. února 2010. Archivováno z originálu 9. dubna 2010. 
  13. Chris Wilson. Cool Stuff (31. srpna 2009). Získáno 12. února 2010. Archivováno z originálu 24. července 2011.
  14. Bas Schouten. Direct2D: Hardwarové vykreslování prohlížeče (22. listopadu 2009). Získáno 12. února 2010. Archivováno z originálu 10. února 2010.
  15. Monokresba . Datum přístupu: 27. prosince 2009. Archivováno z originálu 2. ledna 2010.
  16. Moonlight Notes . Datum přístupu: 27. prosince 2009. Archivováno z originálu 2. ledna 2010.
  17. Plán Gecko 1.9 . Datum přístupu: 27. prosince 2009. Archivováno z originálu 25. července 2008.
  18. Odstraňte backend cairo D2D . Staženo 9. ledna 2019. Archivováno z originálu 9. ledna 2019.
  19. Oznámení Gnuplot verze 4.4.0 (downlink) . domovská stránka gnuplot . Získáno 22. února 2011. Archivováno z originálu 14. května 2011. 
  20. Aktualizace V8 . dl03.1c.ru. Staženo 9. listopadu 2019. Archivováno z originálu 9. listopadu 2019.
  21. Xr: Cross-device Rendering for Vector Graphics . Získáno 8. června 2009. Archivováno z originálu 14. června 2009.
  22. Vlákno konference o změně jména v Káhiře . Získáno 8. června 2009. Archivováno z originálu 24. července 2011.
  23. Vlákno mailing listu o změně názvu cairo . Získáno 2. prosince 2006. Archivováno z originálu dne 25. června 2013.

Odkazy na externí zdroje