GTKの簡素化されたソフトウェアアーキテクチャ | |
| 原作者 | GIMPの作者 |
|---|---|
| 開発者 | GNOME プロジェクト |
| リポジトリ |
|
| 書かれた | C |
| オペレーティング·システム | Linux、macOS、Microsoft Windows |
| プラットフォーム | X11、Wayland、Quartz、GDI |
| タイプ | ソフトウェアライブラリ |
| ライセンス | GNU 劣等一般公衆利用許諾書(LGPL) |
| Webサイト | 開発者.gnome.org/gdk3/stable/ |
GDK ( GIMP Drawing Kit) は、基盤となるウィンドウおよびグラフィック システムによって提供される低レベル関数のラッパーとして機能するライブラリです。GDK はディスプレイ サーバーとGTKライブラリの間にあり、描画プリミティブ、ラスター グラフィック(ビットマップ)、カーソル、フォント、ウィンドウ イベント、ドラッグアンドドロップ機能などの基本的なレンダリングを処理します。
GTK Scene Graph Kit (GSK)と同様に、GDK は GTK の一部であり、GNU Lesser General Public License (LGPL) に基づいてライセンスされます。
ソフトウェアアーキテクチャ

GTK は GDK と呼ばれる抽象化レイヤーの上に実装されており、入力の収集、ドラッグ アンド ドロップ、ピクセル形式の変換などの低レベルの問題から GTK を解放します。GDK は、GTK をウィンドウ システムの詳細から分離する中間レイヤーです。
GDK は GTK の移植性にとって重要な部分です。低レベルのクロスプラットフォーム機能はGLibによって既に提供されているため、GTK を他のプラットフォームで実行するために必要なのは、基盤となるオペレーティング システムのグラフィックス レイヤーに GDK を移植することだけです。したがって、 Windows APIとQuartzへの GDK の移植により、GTK アプリケーションをそれぞれWindowsとmacOSで実行できるようになります。
GTK+ 2.8以降、GDKはCairoをサポートしており、GDKの描画関数の代わりにGTK+ 3で使用する必要があります。[1]
GDK は、 GTK をウィンドウ システムの詳細から分離する中間層です。GDK はXlibの薄いラッパーです。X ウィンドウ システムには、Xlibと呼ばれる低レベルのライブラリが付属しています。GDK のほぼすべての関数は、対応する Xlib 関数の非常に薄いラッパーですが、プログラミングを簡素化し、GDK をWaylandや Microsoft Windowsなどの他のウィンドウ システムに移植しやすくするために、Xlib の複雑さ (および機能) の一部は隠されています。隠された Xlib の機能は、アプリケーション プログラマーにとってほとんど関心を引くものではありません。たとえば、ウィンドウ マネージャーによってのみ使用される多くの機能は、GDK では公開されていません。
GDK を使用すると、たとえば「このピクセルマップを画面に 転送する」などの低レベルの処理を実行できます。
GDK は、X などのシステムが提供する低レベルのアクセシビリティを犠牲にすることなく、X プロトコルよりもはるかに移植性の高いレイヤーを提供します。この抽象化の真の威力は、X ではなく GDK を使用することを選択した場合、ソフトウェアが Linux フレームバッファーと Windows で自動的にレンダリングされることです。
GDK でOpenGL (またはOpenGL ES ) がサポートされていると、グラフィックス パイプラインの制御が若干向上します。OpenGL はテクスチャ データの合成には適していますが、描画にはまったく適していません。
Gdkフレームクロック
GdkFrameClockはGTK 3.8で追加された[2]
GTK アプリケーションはメインループ駆動のままです ( Glib イベント ループを参照)。つまり、アプリケーションはほとんどの時間このメイン ループ内でアイドル状態にあり、何かが起こるのを待って、何かが起こったときに適切なサブルーチンを呼び出します。一方、GdkFrameClock は、アプリケーションに「パルス」を与える追加のメカニズムを追加します。アプリケーションに、ウィンドウを更新して再描画するタイミングを伝えます。[3]ビート レートは、モニターのリフレッシュ レートと同期できます。
GTK シーングラフキット
これまで、GDK にはいくつかの異なるCanvas が含まれ、リンクされていました。
- https://wiki.gnome.org/Attic/ProjectRidley/CanvasOverview
- https://wiki.gnome.org/Attic/ProjectRidley/CanvasOverview/Canvases
- https://wiki.gnome.org/Projects/GooCanvas
開発者たちは、非推奨のAPIコンポーネントを削除し、 Clutterグラフィックスライブラリに似た統合シーングラフ(キャンバス)システムを追加して、GTKをOpenGLおよびVulkanと効果的に統合するなど、ライブラリの新しい方向性も検討していました。[4] [5]
- GTKシーングラフキット(GSK)[6] [7]
GTK+ シーン グラフ キット (GSK) は、2017 年 3 月に GTK+ 3.90 の一部としてリリースされました。これは、GTK 用のシーン グラフおよびレンダリング API です。GSK は、GDK (これも GTK の一部) とさらに統合されていませんが、独自のディレクトリに保存されています。
ウィンドウシステム
GDKには、X11およびWaylandプロトコル、QuartzおよびGDI、さらにはハイパーテキスト転送プロトコル(HTTP) エンジン Broadwayなど、いくつかのウィンドウ システムのバックエンドが含まれています。 [引用が必要]
2015年3月のGNOME 3.16のリリースにより、GDKはMirディスプレイサーバープロトコルの実験的なバックエンドを手に入れました。 [8] Mirディスプレイサーバープロトコルは、CanonicalのLinuxディストリビューションUbuntu向けの製品であり、Waylandディスプレイサーバープロトコルと競合することを意図しています。これまでのところ、Ubuntuにのみ実装されています。
現在、KMSのバックエンドは存在しません。[引用が必要]
アプリケーションを起動し、そのインスタンスが特定のウィンドウ システムを使用するように強制するには、変数GDK_BACKENDを指定します。
GDK_BACKEND=wayland gnome-calculator
GDK_BACKEND=wayland CLUTTER_BACKEND=wayland cheese
gdk-pixbuf
gdk-pixbuf は、イメージの読み込みとピクセル バッファの操作のためのツールキットです。このライブラリは、イメージの読み込みと保存機能、pixbuf の高速スケーリングと合成、シンプルなアニメーションの読み込み (アニメーション GIF など)、libart イメージ バッファの GdkDrawable インスタンスへのレンダリングを提供します。
gdk-pixbuf にはかなり大きな API があります。
gdk-pixbuf ライブラリの基本構造は GdkPixbuf です。これは、ArtPixBuf がサポートするのと同じ概念の多くを反映した、プライベートで不透明なデータ構造です。実際、GdkPixbuf のプライベート データ フィールドのほとんどは、ArtPixBuf の対応するフィールドと同じ名前とデータ型を持っています。この類似性は、gdk-pixbuf がlibart のラッパーだった初期の頃に遡ります。その時から、libart への依存は取り除かれ、gdk-pixbuf は GTK+ 2.0 コード ベースに統合されました。そのため、gdk-pixbuf がスタンドアロン ライブラリとして存在できるのは、 GNOME 1リリースまでです。
2010 年 9 月 23 日の GTK+ 2.22 のリリースにより、gdk-pixbuf は、gtk+ 2.0 以降 GTK+ の一部として出荷されていましたが、スタンドアロン ライブラリに戻りました。これは、GTK+ 3 への移行に備えて行われたものです。
- https://git.gnome.org/browse/gdk-pixbuf/
最初のスタンドアロン リリースは 2010 年 9 月 21 日の 2.22 で、その開発は 2010 年 6 月 23 日の 2.21.3 から開始されました。
歴史
GDKはもともとX Window System上でGIMPラスターグラフィックエディタ用に開発されました。[9]
参照
- 乱雑
参考文献
- ^ GTK+ 2.x から GTK+ 3 への移行 - 描画には cairo を使用する
- ^ 「GdkFrameClock」。
- ^ Larsson, Alexander (2013-11-04). 「最新の Gtk 描画モデル」.
- ^ アルベルト・ルイスのブログ
- ^ ハボック・ペニントンのシーングラフ提案
- ^ 「GTK+ シーングラフキット」 2014-07-29.
- ^ 「グラフェン」. 2014年5月2日.
- ^ 「mir の実験的なバックエンドを追加する」。
- ^ GIMP - GIMP の簡単な(そして古い)歴史
外部リンク
- GTK+ 3.19.0 リリースからの GDK コード
- 最新の Gtk 描画モデル – Alexander Larsson、2013/11/04
- GTK とそのライブラリの概要 2019-03-12 にWayback Machineにアーカイブ- GTK プロジェクト
- https://git.gnome.org/browse/gtk-web/plain/images/architecture.svg
