Káhira
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í :
- FLTK má plnou podporu pro Cairo (při kompilaci FLTK musíte zadat volbu "--enable-cairo").
- GNUstep používá Cairo jako svůj hlavní backend na systémech mimo Windows [8] .
- 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ů. Od verze 3.0 GTK+ kreslí všechny prvky přes Káhiru.
- Káhira má přímý přístup ke knihovně SDL [9] .
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:
- 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.
- 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.
- 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
- ↑ https://gitlab.freedesktop.org/cairo/cairo/-/graphs/master
- ↑ https://www.cairographics.org/news/cairo-1.16.0/
- ↑ Uvolněte snímek 1.17.6
- ↑ Káhirský projekt Open Source na Open Hub: Stránka jazyků - 2006.
- ↑ 1 2 https://web.archive.org/web/20180224092509/https://www.cairographics.org/
- ↑ 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. (neurčitý)
- ↑ Káhirské jazykové vazby . Získáno 16. dubna 2014. Archivováno z originálu 17. května 2011. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ Káhira - SDL (17. února 2009). Získáno 3. listopadu 2014. Archivováno z originálu dne 2. října 2014. (neurčitý)
- ↑ Chris Wilson. Sloučen nový backend OpenGL (22. července 2009). Získáno 12. února 2010. Archivováno z originálu 24. července 2011. (neurčitý)
- ↑ Øyvind Kolås. Oznamujeme backend OpenVG (24. ledna 2008). Získáno 12. února 2010. Archivováno z originálu 16. dubna 2009. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ Chris Wilson. Cool Stuff (31. srpna 2009). Získáno 12. února 2010. Archivováno z originálu 24. července 2011. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ Monokresba . Datum přístupu: 27. prosince 2009. Archivováno z originálu 2. ledna 2010. (neurčitý)
- ↑ Moonlight Notes . Datum přístupu: 27. prosince 2009. Archivováno z originálu 2. ledna 2010. (neurčitý)
- ↑ Plán Gecko 1.9 . Datum přístupu: 27. prosince 2009. Archivováno z originálu 25. července 2008. (neurčitý)
- ↑ Odstraňte backend cairo D2D . Staženo 9. ledna 2019. Archivováno z originálu 9. ledna 2019. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ Aktualizace V8 . dl03.1c.ru. Staženo 9. listopadu 2019. Archivováno z originálu 9. listopadu 2019. (neurčitý)
- ↑ Xr: Cross-device Rendering for Vector Graphics . Získáno 8. června 2009. Archivováno z originálu 14. června 2009. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ 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. (neurčitý)
Odkazy na externí zdroje
|
---|
Komponenty |
| |
---|
Knihovny |
|
---|
Rámce |
|
---|
Setkání |
|
---|