Kairó

Kairó
Típusú grafikus könyvtár [d] ésfüggvénykönyvtár
Fejlesztő Keith Packard , Carl Worth [d] és Behdad Esfahbod [d] [1]
Beírva C [4]
Operációs rendszer GNU/Linux , Microsoft Windows és macOS
legújabb verzió
Teszt verzió
Engedély Mozilla Public License 1.1 [d] [5]és LGPL-2.1 [d] [5]
Weboldal cairographics.org
 Médiafájlok a Wikimedia Commons oldalon

A Cairo  egy nyílt forráskódú vektorgrafikus renderelő szoftverkönyvtár . Hardverfüggetlen alkalmazásprogramozási felületet tartalmaz szoftverfejlesztők számára. Kairó grafikus primitíveket biztosít a 2D képek megjelenítéséhez különféle háttérprogramokon keresztül . Amikor csak lehetséges, Kairó hardveres gyorsítást használ .

Hivatalos javaslat született a kairói könyvtárra épülő 2D renderelő API C++ nyelvű szabványosítására [6] .

Szoftver architektúra

Nyelvi kötések

Bármelyik programozási nyelven írt könyvtár használható egy másikban is, ha az ún. összekapcsolása egy új nyelvvel. Kairóban a programozási nyelv-összerendelések széles skálája létezik: C++ , C# és más CLI - kompatibilis nyelvek . Vannak Kairo kötések is a Delphi , Factor , Haskell , Lua , Perl , PHP , Python , Ruby , Scheme , Smalltalk és mások számára [7] .

Szerszámkötések

Mivel Cairo csak egy renderelő könyvtár, nagy előnyt jelenthet, ha integrálva van a grafikus felhasználói felület -építő eszközökkel :

Elérhető háttérprogramok

Kairó a felszíni absztrakción működik . A felület az, amire Kairó fest. E felület mögé különféle háttérrendszerek bújhatnak meg, amelyek a kairói munka eredményét továbbíthatják az X Window System , Xlib és XCB , Win32 GDI , OS X Quartz Compositor , BeOS , OS/2 , OpenGL kontextusoknak (közvetlenül [10] és keresztül glitz ), helyi képpuffer, PNG -fájlok, PDF- , PostScript- , DirectFB- és SVG - fájlok.

Vannak más grafikus felhasználói felületek: OpenVG [11] , Qt [12] , Skia [13] és Direct2D [14] .

Render modell

A kairói megjelenítési modell három lépésből áll:

  1. Először egy maszk jön létre, amely vektorprimitívekből vagy alakzatokból áll. Például körök, négyzetek, Bezier-görbék , TrueType betűtípusok stb.
  2. Ezután meg kell határozni egy úgynevezett forrást, amely lehet szín, színátmenet , bittérkép vagy vektorkép. Ezután a forrás színes részeit a megadott maszk segítségével levágjuk.
  3. Ezután az eredmény átkerül a felületre, amelyet a megfelelő háttérrendszer veszi fel.

Ez a leképezési modell alapvetően különbözik az SVG -ben alkalmazott renderelési megközelítéstől .

Példa

A népszerű Hello World! meglehetősen összetett grafikus változata! ” megvalósítható Kairó használatával, például az alábbiak szerint:

#include <cairo-svg.h> int main ( int argc , char ** argv ) {     cairo_t * cr ;     cairo_surface_t * felület ;     cairo_pattern_t * minta ;     int x , y ;     felület = ( cairo_surface_t * ) cairo_svg_surface_create ( "Cairo_example.svg" , 110.0 , 110.0 );     cr = cairo_create ( felület );     /* Rajzolj négyzeteket a háttérben */     for ( x = 0 ; x < 10 ; x ++ )        for ( y = 0 ; y < 10 ; y ++ )            cairo_rectangle ( cr , x * 10,0 , y * 10,0 , 5 , 5 );     minta = cairo_pattern_create_radial ( 50 , 50 , 5 , 50 , 50 , 50 );     cairo_pattern_add_color_stop_rgb ( minta , 0 , 0,75 , 0,15 , 0,99 );     cairo_pattern_add_color_stop_rgb ( minta , 0.9 , 1 , 1 , 1 );     cairo_set_source ( cr , minta );     cairo_fill ( cr );     /* Rajzolja meg az előteret */     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 , "Szia," );     cairo_move_to ( cr , 10 , 55 );     cairo_show_text ( cr , "Wikipédia!" );     cairo_destroy ( cr );     cairo_surface_destroy ( felület );     return 0 ; }

Használat

Kairó népszerű a nyílt forráskódú közösségben a hordozhatósága és a 2D képek minőségi megjelenítése miatt.

  • A GTK+ teljes mértékben támogatja a Kairót. A 2005-ös 2.8-as verziótól kezdődően a GTK+ Kairót használja a legtöbb grafikus vezérlő megjelenítéséhez. A 3.0-s verziótól kezdve a GTK+ általában mindent Kairón keresztül rajzol.
  • A Mono projekt [15] , beleértve a Holdfényt [16] , Kairót használja.
  • A Mozilla projekt a Kairót használja a Gecko [17] böngészőmotorban . A Firefox 52-ben elavult a Direct2D (Windows 10) és a Skia (alacsonyabb) javára, de továbbra is támogatott, ha speciális beállításokon keresztül vált rá. A Firefox 66 támogatása óta teljesen megszűnt [18] .
  • A WebKit keretrendszer a Kairót használja a GTK+ és EFL portokra való rendereléshez. A Cairo támogatása az SVG-grafikák megjelenítéséhez és a <canvas> címke tartalmához is hozzáadásra került.
  • A Poppler-könyvtár Kairót használja a PDF-dokumentumok megjelenítéséhez. Kairót sima vektorgrafikák és átlátszó objektumok készítésére használják.
  • Az Inkscape vektorgrafikus szerkesztő Kairót használja.
  • A MorphOS 2.5 operációs rendszer a Cairo rendszert használja.
  • Az AmigaOS 4.1 operációs rendszer az alapértelmezett telepítésben támogatja a Cairo megosztott objektumkönyvtárat (libcairo.so).
  • A FontForge alapértelmezett betűkészlet-szerkesztője 2008. október közepe óta a Cairo-t használja.
  • Az R programozási nyelv képes PDF , PostScript és SVG formátumú grafikák kiadására Cairo használatával.
  • Kairó a Gnuplot 4.4-et használja PDF és PNG formátumú rendereléshez [19] .
  • A PlayStation 3 webböngészője a Kairót használja a rendszerfrissítés 4.10-es verziójától kezdve.
  • A Synfig 0.64 mostantól opcionálisan támogatja a képmegjelenítést Kairón keresztül.
  • A Graphite számítógépes rendszer teljesítményét figyelő és megjelenítő program képes grafikonok megjelenítésére Kairón keresztül.
  • Az 1C:Enterprise 8.3 platform a 8.3.16-os verziótól kezdve a Cairo-t használja a rendereléshez [20] .

Történelem

Keith Packard és Carl Worth megalapította a Cairo projektet az X Window Systemben való használatra [21] . Kezdetben (legalábbis 2003-ig) a projekt neve Xr vagy Xr/Xc volt . A név megváltozott annak hangsúlyozása érdekében, hogy a könyvtár hordozható, tetszőleges megjelenítőszerverhez hozzáférhet, nem csak az X Window System -hez [22] kötve .

A Kairó név a görög χ és ρ betűkkel értelmezett eredeti Xr névből származik [23] .

Lásd még

  • PostScript megjelenítése
  • Skia grafikus
  • Starling
  • WebGL

Jegyzetek

  1. https://gitlab.freedesktop.org/cairo/cairo/-/graphs/master
  2. https://www.cairographics.org/news/cairo-1.16.0/
  3. Kiadási pillanatkép 1.17.6
  4. A kairói nyílt forráskódú projekt az Open Hubon: Nyelvek oldala - 2006.
  5. 1 2 https://web.archive.org/web/20180224092509/https://www.cairographics.org/
  6. Michael B. McLaughlin; Herb Sutter, Jason Zink. Javaslat a 2D grafikai megjelenítés és megjelenítés hozzáadására a C++ 2. változatához . Nyílt szabványok (2014. július 3.). Letöltve: 2014. szeptember 12. Az eredetiből archiválva : 2014. szeptember 12..
  7. Kairói nyelvi kötések . Letöltve: 2014. április 16. Az eredetiből archiválva : 2011. május 17..
  8. Fedor, Adam felhasználói alapértelmezések összefoglalása a GNUstep háttérrendszerhez (2011. szeptember 29.). Letöltve: 2014. november 3. Az eredetiből archiválva : 2014. március 26..
  9. Kairó – SDL (2009. február 17.). Letöltve: 2014. november 3. Az eredetiből archiválva : 2014. október 2..
  10. Chris Wilson. Az új OpenGL-háttér egyesítése (2009. július 22.). Letöltve: 2010. február 12. Az eredetiből archiválva : 2011. július 24..
  11. Øyvind Kolås. Az OpenVG háttérrendszer bemutatása (2008. január 24.). Letöltve: 2010. február 12. Az eredetiből archiválva : 2009. április 16..
  12. Vlagyimir Vukicevic. Hát nem ez a Qt (hivatkozás nem elérhető) (2008. május 6.). Letöltve: 2010. február 12. Az eredetiből archiválva : 2010. április 9.. 
  13. Chris Wilson. Cool Stuff (2009. augusztus 31.). Letöltve: 2010. február 12. Az eredetiből archiválva : 2011. július 24..
  14. Bas Schouten. Direct2D: Böngésző hardveres megjelenítése (2009. november 22.). Letöltve: 2010. február 12. Az eredetiből archiválva : 2010. február 10..
  15. Mono-rajz . Hozzáférés dátuma: 2009. december 27. Az eredetiből archiválva : 2010. január 2..
  16. Moonlight Notes . Hozzáférés dátuma: 2009. december 27. Az eredetiből archiválva : 2010. január 2..
  17. Gecko 1.9 ütemterv . Hozzáférés dátuma: 2009. december 27. Az eredetiből archiválva : 2008. július 25.
  18. Távolítsa el a cairo D2D hátterét . Letöltve: 2019. január 9. Az eredetiből archiválva : 2019. január 9..
  19. A Gnuplot 4.4.0-s verziójának bejelentése (lefelé irányuló kapcsolat) . gnuplot honlapja . Letöltve: 2011. február 22. Az eredetiből archiválva : 2011. május 14.. 
  20. V8 frissítés . dl03.1c.ru. Letöltve: 2019. november 9. Az eredetiből archiválva : 2019. november 9..
  21. Xr: Eszközök közötti renderelés vektorgrafikához . Letöltve: 2009. június 8. Az eredetiből archiválva : 2009. június 14..
  22. Levelezőlista szál a kairói névváltoztatásról . Letöltve: 2009. június 8. Az eredetiből archiválva : 2011. július 24..
  23. Levelezőlista szál a kairói névváltoztatásról . Letöltve: 2006. december 2. Az eredetiből archiválva : 2013. június 25.

Hivatkozások külső forrásokhoz