Vala プログラミング

WebGPU プログラミング

おなが@京都先端科学大

GNUstep CoreGraphics (1)

今回は、ブログタイトルから離れて、GNUstep について書いています。

最近 GNUstepObjective-C についての記事が、2、3報告されています。
今更のObjective-C | 貯え 小道具 興味ない?
M1 Mac-Ubuntu20.04でGNUstep | 貯え 小道具 興味ない?
GNUstepをWindowsで試すならWSLを使う-Ubuntu 20.04 LTS+WSL2へのインストール - Technically Impossible

当方 2007年に「GNUstep 入門」(ふくろう出版、友野印刷)を出版しています。
Objective-C プログラミングや ProjectCenter、Gorm の使用方法について記してい
ます。

GNUstep は、それ以降もライブラリの追加やアップデートが行われています。
今回は、CoreGraphics(libs-opal) について調べてみました。
CoreGraphics による描画

ProjectCenter を使ってプログラムの編集、ビルド、実行を行っています。

OSは Lubuntu22.04 Linux を使用しています。GNUstep のベースシステムは
Lubuntu の repo からインストールします。
プログラミングを行うので、
・make, gnustep-make, gcc, gobjc などの build tools
・ProjectCenter, Gorm のプログラミングツール
もインストールしておきます。

*日本語の表示
スタートアップメニューの設定から System Preferences を起動し、Preferences
ウインドウから「Font」を選択する。
最初は、gnustep default の DejaVuSansMono を選択し、その後
NotoSans CJK jp Regular等(Lubuntu の日本語フォント)に変更する。

*CoreGraphics(libs-opal)、CoreFoundation(libs-corebase, 依存ライブラリ) の
ビルドとインストール
libs-corebase とlibs-opalはバイナリーが無いので、ソースからビルドし
インストールします。ソースはGNUstepGithub からダウンロードします。
・libs-corebase
 1依存ライブラリ libicu-dev をインストール(lubuntu repo から)
 2./configure
 3make
 4sudo make install

・libs-opal
 1依存ライブラリ libfontconfig-dev、libcairo2-dev、liblcms2-dev、
   libjpeg-turbo8-dev、libtiff-devをインストール(lubuntu repo から)
 2make
 3sudo make install
 libファイルlibopal.so.o は /usr/local/lib にインストールされるので、
 フォルダを設定します。
  export LD_LIBRARY_PATH=/usr/local/lib

・libs-QuartzCore
 libs-opal では、XWindow に表示するようになっています。これをNSWindow に
 表示するため、libs-QuartzCore を利用します。NSOpenGLView に表示
 します。
 1依存ライブラリ libgl-dev、libglu1-mesa-devをインストール
  (lubuntu repo から)
 2Tests の make で、cairo reference error が出るので、
  Tests/GNUmakefile の ADDITIONAL_TOOL_LIBS に -lcairo を追加
 3make
 4sudo make install

*ProjectCenter のビルドとインストール
CoreGraphics では gnustep 以外に OpenGL、opal、cairo等のライブラリも使用します。これらが利用出来るように、プログラムのビルド時にGNUmakefile.preamble
に設定します。
  ADDITIONAL_GUI_LIBS += -lm -lGL -lGLU -lopal -lcairo

しかし、1つ問題があります。ProjectCenter では、プロジェクトの保存や
再オープン時に GNUmakefile.preamble に設定した内容が、リセット されます。
これを避けるため、ProjectCenter のソースファイルを修正しインストールします。
ソース(apps-projectcenter)はGNUstepGithub からダウンロードします。(バージョンは 0.7)
・修正箇所
Modules/Projects にある各Projectの PC(Project名).m を修正する。
writeMakefile メソッド内の [mf createPreambleForProject:self] を
createProjectAt メソッド内に移動し、
[[PCMakefileFactory sharedFactory] createPreambleForProject:self];
とする。
その後、
 make
 sudo make install
を行う。

実際のプログラム作成は、次回に報告。