맨위로가기

카이로 (그래픽스)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

카이로(Cairo)는 키스 패커드와 칼 워스가 X 윈도 시스템에서 사용하기 위해 개발한 2D 그래픽 라이브러리이다. C 언어를 기반으로 하며, C++, C#, 파이썬, 자바 등 다양한 언어 바인딩을 지원한다. FLTK, GTK, SDL 등 그래픽 사용자 인터페이스 툴킷과 통합되어 사용되며, X 윈도 시스템, Win32 GDI, macOS 쿼츠 컴포지터, PNG, PDF, SVG 등 다양한 백엔드 출력을 지원한다. 드로잉 모델은 마스크 생성, 소스 정의, 표면 전송의 세 단계로 이루어지며, GTK, 모노 프로젝트, 모질라, 웹킷, 잉크스케이프 등 오픈 소스 프로젝트에서 널리 사용된다. 복잡한 텍스트 레이아웃을 위해서는 팡고를 함께 사용할 것을 권장한다.

더 읽어볼만한 페이지

  • GTK - Pango
    Pango는 텍스트 렌더링 라이브러리로, OpenType 기능을 지원하여 텍스트 렌더링의 유연성을 높였으며, 리눅스, GTK 툴킷, 모질라 제품군 등 다양한 소프트웨어에서 사용되고 2006년 Cairo에 통합되어 다양한 플랫폼에서 텍스트와 그래픽 렌더링을 지원한다.
  • GTK - GObject
    GObject는 GNOME 프로젝트의 핵심 객체 지향 시스템으로, GType을 통한 런타임 정보 관리, 클로저와 시그널 기반 메시징 시스템을 갖추고 있으며, 다양한 언어 바인딩을 지원하여 CUI, 서버 애플리케이션 및 자유 소프트웨어 프로젝트에서 활용된다.
  • Freedesktop.org - D-Bus
    D-Bus는 2002년에 시작된 프로세스 간 통신 시스템으로, 시스템 버스와 세션 버스를 통해 정보 공유, 모듈성, 권한 격리를 제공하며, 일대일 요청-응답 및 발행/구독 통신 방식을 지원한다.
  • Freedesktop.org - 메사 (컴퓨터 그래픽스)
    메사는 다양한 운영체제에서 3D 그래픽 하드웨어 가속을 지원하는 자유-오픈 소스 그래픽 라이브러리로, OpenGL, Vulkan, OpenCL 등 다양한 그래픽 API를 지원하며 소프트웨어 렌더링 기능도 제공한다.
  • 모질라 라이선스 소프트웨어 - 모질라 파이어폭스
    모질라 파이어폭스는 모질라 재단에서 개발한 무료 오픈 소스 웹 브라우저로, 탭 브라우징, 팝업 차단, 확장 기능 등을 지원하며 웹 표준 준수 및 개인 정보 보호 기능을 강화했다.
  • 모질라 라이선스 소프트웨어 - 시몽키
    시몽키는 웹 브라우저, 이메일 클라이언트, HTML 편집기, IRC 클라이언트를 통합한 오픈 소스 인터넷 스위트이며, 모질라 애플리케이션 스위트의 개발 중단 후 시몽키 위원회가 이어받아 개발하고 파이어폭스와 동일한 게코 엔진을 사용한다.
카이로 (그래픽스) - [IT 관련 정보]에 관한 문서
일반 정보
종류그래픽 라이브러리
개발자키스 패커드, 칼 워스
개발칼 워스, 베흐다드 에스파흐보드
초기 릴리스2003년 이전
프로그래밍 언어C 언어
라이선스GNU LGPL 버전 2.1 (단독) 또는 MPL 1.1
웹사이트카이로 그래픽스 공식 웹사이트
저장소카이로 저장소

2. 역사

키스 패커드와 칼 워스는 X 윈도 시스템에서 사용하기 위해 카이로 프로젝트를 설립했다.[2] 초기에는(최소 2003년까지) '''Xr''' 또는 '''Xr/Xc'''라고 불렸으나, 디스플레이 서버에 접근하기 위한 X 윈도 시스템에 얽매이지 않는 크로스 플랫폼 라이브러리라는 점을 강조하기 위해 이름이 변경되었다.[21] ''카이로''라는 이름은 원래 이름 ''Xr''에서 유래되었으며, 그리스 문자 키와 로로 해석된다.[22]

3. 소프트웨어 아키텍처

카이로는 다양한 언어 바인딩을 제공하여 여러 프로그래밍 언어에서 사용할 수 있으며, 그래픽 사용자 인터페이스 툴킷과의 통합을 통해 활용도를 높이고 있다.

3. 1. 언어 바인딩

C 언어가 기본 API이지만, C++, C# 및 기타 CLI 언어, 델파이, 에펠, 포트란, 팩터, 하버, 하스켈, 줄리아, 루아, , PHP, 파이썬, 루비, 러스트, Scheme, 스몰토크, Gambas (Visual Basic과 유사) 등 여러 언어에 대한 바인딩을 제공한다.[4] Ada, C++, Common Lisp, Factor, Haskell, Java, Lua, Mono와 .NET, Perl, PHP, Python, Ruby, Scheme, Smalltalk 등의 바인딩도 존재한다.[24]

3. 2. 툴킷 바인딩

카이로는 드로잉 라이브러리이므로, 그래픽 사용자 인터페이스 툴킷과 통합하면 매우 유용할 수 있다.

  • FLTK는 전체 카이로 지원을 한다(`--enable-cairo` 컴파일 스위치를 통해).
  • GTK는 2005년 버전 2.8부터 카이로를 사용하여 대부분의 그래픽 제어 요소를 렌더링하기 시작했으며, 버전 3.0부터 모든 렌더링이 카이로를 통해 수행된다.
  • 카이로 개발팀은 SDL에 표면을 렌더링하기 위한 최신 지침을 유지 관리한다.[5]
  • 모질라 파이어폭스 - 렌더링 엔진 게코의 그리기에 카이로를 채용.
  • Poppler - 카이로를 사용한 PDF 그리기 라이브러리.
  • GNU Emacs - 버전 28.1에서 카이로를 채용[25]

3. 3. 백엔드

카이로는 코드 내에서 "표면"이라고 하는 다양한 래스터화를 포함한 여러 가지 백 엔드로의 출력을 지원한다. 지원되는 백 엔드에는 XlibXCB를 통한 X 윈도우 시스템, Win32 GDI(마이크로소프트 윈도우), OS X 쿼츠 컴포지터, BeOS API, OS/2, OpenGL 컨텍스트(직접[6] 및 글리츠를 통해), 로컬 이미지 버퍼, PNG 파일, PDF, 포스트스크립트, DirectFB 및 SVG 파일 출력이 포함된다.

OpenVG[7], Qt[8], Skia[9] 및 마이크로소프트의 Direct2D[10] 그래픽 API를 대상으로 하는 다른 백 엔드도 개발 중이다. BeOS, OS/2 및 DirectFB 백 엔드는 2022년에 중단되었다.[11]

4. 드로잉 모델

카이로 드로잉 모델


카이로 드로잉 모델은 3계층 모델에 의존한다.

모든 드로잉 프로세스는 다음 세 단계로 진행된다.

# 먼저 원, 사각형, 트루타입 글꼴, 베지어 곡선 등 하나 이상의 벡터 기본 요소 또는 형태를 포함하는 마스크가 생성된다.

# 그런 다음 색상, 색상 그라데이션, 비트맵 또는 일부 벡터 그래픽일 수 있는 소스를 정의하고, 이 소스의 칠해진 부분에서 위에서 정의된 마스크를 사용하여 다이 컷을 만든다.

# 마지막으로 결과는 출력용 백엔드에서 제공하는 대상 또는 표면으로 전송된다.

이것은 CSS(Cascading Style Sheets) 규칙으로 도형의 색상을 지정하는 SVG(Scalable Vector Graphics)와 근본적으로 다른 접근 방식이다.[12] 카이로는 도형의 마스크를 만들고, 소스를 만든 다음 표면으로 전송하는 반면, SVG 파일은 `style` 속성으로 도형을 간단히 지정한다. 즉, 모델이 호환되지 않는 것은 아니며, 많은 SVG 렌더러가 카이로를 사용하여 복잡한 작업을 처리한다.[12]

카이로를 사용하면 단 몇 줄의 소스 코드로 매우 복잡한 "Hello world" 그래픽을 그릴 수 있다.

이 예제에서 생성된 SVG 그림

5. 주요 사용처


  • GTK는 2005년 버전 2.8부터 그래픽 컨트롤 요소의 대부분을 렌더링하기 위해 카이로를 사용한다.[13] GTK 버전 3부터는 모든 렌더링이 카이로를 사용하여 수행된다.
  • 모질라 프로젝트는 게코 레이아웃 엔진에서 카이로를 사용해 왔다. 게코는 모질라 제품의 그래픽 출력을 렌더링하는 데 사용된다. 파이어폭스 3의 기반이 되는 게코 1.9[17] 릴리스는 웹 페이지 콘텐츠와 사용자 인터페이스를 모두 렌더링하기 위한 그래픽 백엔드로 카이로를 사용한다.
  • WebKit 프레임워크는 GTK 및 EFL 포트에서 모든 렌더링에 카이로를 사용한다.
  • Poppler 라이브러리는 PDF 문서를 렌더링하기 위해 카이로를 사용하며, 안티앨리어싱된 벡터 그래픽과 투명 객체의 그리기를 가능하게 한다.
  • 벡터 그래픽 응용 프로그램인 잉크스케이프는 0.46 릴리스부터 PDF 및 PostScript 내보내기를 위해 카이로 라이브러리를 사용한다.[18]
  • Manim의 원래 버전은 ManimCairo라고 불렸다. 이후 OpenGL을 사용하도록 변경되었으며, 이 버전은 ManimGL이라고 한다.[19]
  • FontForge는 2008년 10월 중순부터 렌더링에 카이로를 기본적으로 활성화했다.
  • R은 카이로를 사용할 수 있는 경우 PDF, PostScript 및 SVG 형식으로 플롯을 출력할 수 있다.
  • Gnuplot 4.4는 이제 PDFPNG 출력을 렌더링하기 위해 카이로를 사용한다.[20]
  • Synfig 0.64는 이제 선택적으로 카이로 렌더링을 지원한다.
  • Graphite에서 시계열 데이터의 온디맨드 그래프를 지원한다.
  • SolveSpace는 무료 오픈 소스 2D 및 3D CAD 소프트웨어이다.
  • GIMP에서 사용된다.
  • GNU Emacs는 버전 28.1에서 카이로를 채용했다.[25]

6. 복잡한 텍스트 레이아웃

카이로는 라틴어 및 CJK 기반 글꼴을 처리하지만, 글리프 셰이핑이 필요한 복잡한 텍스트 레이아웃 글꼴은 직접 지원하지 않는다. 카이로 개발자는 복잡한 텍스트 레이아웃을 제공하고 카이로와 통합될 수 있는 팡고를 사용할 것을 권장한다.[23]

참조

[1] 웹사이트 Carl's boring web pages http://cworth.org/ 2014-07-11
[2] 웹사이트 Xr: Cross-device Rendering for Vector Graphics http://cworth.org/~c[...] 2009-06-08
[3] 웹사이트 Cairo homepage http://cairographics[...] 2010-10-30
[4] 웹사이트 Cairo Language Bindings http://cairographics[...] 2014-04-16
[5] 웹사이트 SDL http://cairographics[...] 2014-11-03
[6] 웹사이트 New OpenGL backend merged http://lists.cairogr[...] 2010-02-12
[7] 웹사이트 Announcing OpenVG backend http://lists.freedes[...] 2010-02-12
[8] 웹사이트 Well Isn't That Qt http://blog.vlad1.co[...] 2010-02-12
[9] 웹사이트 Cool Stuff http://lists.cairogr[...] 2010-02-12
[10] 웹사이트 Direct2D: Hardware Rendering a Browser http://www.basschout[...] 2010-02-12
[11] 웹사이트 Cairo graphics library drops many old backends https://www.phoronix[...] Phoronix 2022-06-05
[12] 웹사이트 GNOME/librsvg https://github.com/G[...]
[13] 웹사이트 GTK+ to Use Cairo Vector Engine http://developers.sl[...] 2009-12-27
[14] 웹사이트 Details of package gtk-vector-screenshot in stretch https://packages.deb[...]
[15] 웹사이트 Mono - Drawing http://www.mono-proj[...] 2009-12-27
[16] 웹사이트 Moonlight Notes http://www.mono-proj[...] 2009-12-27
[17] 웹사이트 Gecko 1.9 Roadmap https://wiki.mozilla[...] 2009-12-27
[18] 웹사이트 ReleaseNotes046 http://wiki.inkscape[...] 2008-03-31
[19] 웹사이트 ManimCE tutorial by TheoremOfBeethoven — ManimCE tutorial by TB documentation https://zavden.githu[...] 2023-01-29
[20] 웹사이트 Gnuplot version 4.4.0 announcement http://www.gnuplot.i[...] 2011-02-22
[21] 웹사이트 Mailing list thread about the Cairo name change http://lists.cairogr[...] 2009-06-08
[22] 웹사이트 Mailing list thread about the Cairo name change http://lists.freedes[...] 2006-12-02
[23] 웹사이트 How do I use Pango instead of Cairo's "toy" text API? https://www.cairogra[...] 2024-03-20
[24] 웹사이트 Language bindings http://cairographics[...]
[25] 웹사이트 テキストエディター「GNU Emacs 28.1」がリリース - 窓の杜 https://forest.watch[...] 2022-05-11
[26] 웹인용 Carl's boring web pages http://cworth.org/ 2014-07-11
[27] 웹인용 Xr: Cross-device Rendering for Vector Graphics http://cworth.org/~c[...] 2009-06-08



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com