cairo graphics

      Cairo (graphics) GudangMovies21 Rebahinxxi LK21

      Cairo (stylized as cairo) is an open-source graphics library that provides a vector graphics-based, device-independent API for software developers. It provides primitives for two-dimensional drawing across a number of different backends. Cairo uses hardware acceleration when available.


      Software architecture




      = Language bindings

      =
      A library written in one programming language may be used in another language if bindings are written; Cairo has a range of bindings for various languages including C++, C# and other CLI languages, Delphi, Eiffel, Fortran, Factor, Harbour, Haskell, Julia, Lua, Perl, PHP, Python, Ruby, Rust, Scheme, Smalltalk and several others like Gambas (Visual Basic like).


      = Toolkit bindings

      =
      Since Cairo is only a drawing library, it can be quite useful to integrate it with a graphical user interface toolkit.

      FLTK has full Cairo support (through --enable-cairo compile switch).
      GTK began in 2005, with version 2.8, to use Cairo to render the majority of its graphical control elements, and since version 3.0 all rendering is done through Cairo.
      The Cairo development team maintains up-to-date instructions for rendering surfaces to SDL.


      = Available back-ends

      =
      Cairo supports output (including rasterisation) to a number of different back-ends, known as "surfaces" in its code. Back-ends support includes output to the X Window System, via both Xlib and XCB, Win32 GDI, OS X Quartz Compositor, the BeOS API, OS/2, OpenGL contexts (directly and via glitz), local image buffers, PNG files, PDF, PostScript, DirectFB and SVG files.
      There are other back-ends in development targeting the graphics APIs OpenVG, Qt, Skia, and Microsoft's Direct2D. The BeOS, OS/2, DirectFB and OpenGL backends were dropped in 2022.


      = Drawing model

      =

      The Cairo drawing model relies on a three-layer model.
      Any drawing process takes place in three steps:

      First a mask is created, which includes one or more vector primitives or forms, i.e., circles, squares, TrueType fonts, Bézier curves, etc.
      Then source must be defined, which may be a color, a color gradient, a bitmap or some vector graphics, and from the painted parts of this source a die cut is made with the help of the above defined mask.
      Finally the result is transferred to the destination or surface, which is provided by the back-end for the output.
      This constitutes a fundamentally different approach from Scalable Vector Graphics (SVG), which specifies the color of shapes with Cascading Style Sheets (CSS) rules. Whereas Cairo would create a mask of a shape, then make a source for it, and then transfer them onto the surface, an SVG file would simply specify the shape with a style attribute. That said, the models are not incompatible; many SVG renderers use Cairo for heavy lifting.


      Example


      Quite complex "Hello world" graphics can be drawn with the help of Cairo with only a few lines of source code:


      Notable usage


      Cairo is popular in the open source community for providing cross-platform support for advanced 2D drawing.

      GTK, starting in 2005 with version 2.8, uses Cairo to render the majority of its graphical control elements. Since GTK version 3, all the rendering is done using Cairo.
      A program called gtk-vector-screenshot found in Debian allows for taking vector (SVG, PDF, or PostScript) screenshots of GTK 3 applications.
      The Mono Project, including Moonlight, has been using Cairo since very early in conception to power the back-ends of its GDI+ (libgdiplus) and System.Drawing namespaces.
      The Mozilla project has made use of Cairo in its Gecko layout engine, used for rendering the graphical output of Mozilla products. Gecko 1.8, the layout engine for Mozilla Firefox 2.0 and SeaMonkey 1.0, used Cairo to render SVG and content. Gecko 1.9, the release of Gecko that serves as the basis of Firefox 3, uses Cairo as the graphics back-end for rendering both web page content and the user interface (or "chrome").
      The WebKit framework uses Cairo for all rendering in the GTK and EFL ports. Support has also been added for SVG and content using Cairo.
      The Poppler library uses Cairo to render PDF documents. Cairo enables the drawing of antialiased vector graphics and transparent objects.
      The vector graphics application Inkscape uses the Cairo library for its outline mode display, as well as for PDF and PostScript export since release 0.46.
      The original version of Manim referred to as ManimCairo, a mathematical animation engine used in the animations of 3Blue1Brown's YouTube Videos. Manim has since moved to using OpenGL. This version is referred to as ManimGL.
      MorphOS 2.5 features a shared library implementation of Cairo, which was available as stand-alone release for earlier MorphOS versions.
      AmigaOS 4.1 supports a shared object library of Cairo (libcairo.so) in its default installation.
      FontForge enabled Cairo by default for rendering in mid-October 2008.
      R can output plots in PDF, PostScript and SVG formats using Cairo if available.
      Gnuplot 4.4 now uses Cairo for rendering PDF and PNG output.
      Internet Browser for PlayStation 3 uses Cairo since system software update 4.10.
      Synfig 0.64 now supports optional Cairo rendering.
      On-demand graphing of time series data in Graphite.
      The Konfabulator/Yahoo widget engine uses Cairo for identical output to both Win32 and Quartz on Mac OS/X.
      SolveSpace, free and open source 2D and 3D CAD software.


      History


      Keith Packard and Carl Worth founded the Cairo project for use in the X Window System. It was originally (until at least 2003) called Xr or Xr/Xc. The name was changed to emphasize the idea of a cross-platform library to access display server, not tied to the X Window System.
      The name Cairo derives from the original name Xr, interpreted as the Greek letters chi and rho.


      Complex text layout


      Cairo handles Latin and CJK based fonts, but does not directly support complex text layout fonts, which require shaping the glyphs. The Cairo developers recommend using Pango, which provides complex text layout and can integrate with Cairo.


      See also



      Display PostScript and Quartz 2D
      Skia Graphics Engine
      Starling Framework
      WebGL


      References




      External links



      Official website
      cairocffi on GitHub – CFFI-based Cairo bindings for Python
      "Cairo API reference manual".
      "Cairo here, there and everywhere". Linux.Ars. Ars Technica. August 23, 2005.
      "Cross-platform graphics with cairo". IBM.
      "Comparison of PHP image libraries".
      "The Cairo graphics tutorial".

    Kata Kunci Pencarian: cairo graphics

    cairo graphicscairo graphics pdfcairo graphics githubcairo graphics examplescairo graphics tutorialcairo graphics windowscairo graphics documentationcairo graphics downloadcairo graphics alternativecairo graphics python Search Results

    cairo graphics

    Daftar Isi

    How to include and use cairo graphics library in C?

    Dec 27, 2015 · cc hello.c -o hello $(pkg-config --cflags --libs cairo) would mean that hello.c would be able to get the functions definitions of the Cairo graphics library. Take note that the command above is equivalent to cc -o hello hello.c $(pkg-config --cflags - …

    c++ - How to access Cairo drawn path? - Stack Overflow

    Feb 9, 2022 · How to include and use cairo graphics library in C? 0. Cairo multiple shapes in drawing area. 2.

    How to use Cairo PNGs in R Markdown - Stack Overflow

    Mar 7, 2019 · There are many advantages to using Cairo to save R graphics (see here, for example). When saving PDFs, for instance, the cairo_pdf device correctly embeds custom fonts. Using the cairo_pdf graphics device is easy with ggplot-based graphics with ggsave():

    Save R Cairo graphics on windows - Stack Overflow

    Feb 16, 2012 · Save R Cairo graphics on windows. Ask Question Asked 13 years ago. Modified 11 years, 11 months ago.

    haskell - How to install cairo on Windows - Stack Overflow

    The DLL usage sounds easy "Just pop libcairo-2.dll, libpng13.dll and zlib1.dll into your working directory or system PATH" (from the cairo page you've linked). – madth3 Commented Mar 2, 2012 at 1:49

    Getting the Error: Graphics API version mismatch

    Aug 12, 2021 · The graphics engine version, R_GE_version, has been bumped to 14 and so packages that provide graphics devices should be reinstalled. So maybe re-installing the Cairo package solves the issue. Share

    Use generated image as pattern inside cairo graphics

    Jan 27, 2020 · I've gone through the cairo graphics examples using pattern. pattern = cairo_pattern_create_for_surface (image); cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); Now instead of "image" I have a surface with a sequence of :-

    Is it possible to create .eps files with ggsave using the Cairo ...

    TL;DR. You need to call specific pdf and ps cairo devices while the standard png device can be set to produce cario output using its own type parameter.

    r - Graphics API version mismatch - Stack Overflow

    Sep 7, 2017 · Thanks for contributing an answer to Stack Overflow! Please be sure to answer the question.Provide details and share your research!

    Skia vs Cairo vs Direct2D, which is the most feature rich?

    Oct 2, 2017 · I am using all three in my Sciter as graphics backends so you can compare them in action. As of today (Nov 20, 2017): Feature set: Skia and Direct2D are on par by feature set. And both are feature wise supersets of Cairo. From these three, only Direct2D (Direct2D v 1.1) supports printing.