このページでは Paintutils API について解説する。
参考資料:
執筆時のバージョン:
- ComputerCraft 1.55 for Minecraft 1.6.2
Paintutils API
画面にドット絵を描画するためのAPI。
各ドットは文字の背景色を使って表現されており、その基本的な原理は以下の通り。文字(背景色)の表示は
Term APIで行っている。
term.setBackgroundColor( color )
term.setCursorPos(x, y)
term.write(" ")
Paintutils APIの動作はLuaスクリプトによって書かれている(assets\computercraft\lua\rom\apis\paintutils)。
各ドットの横縦比(以降も比率は横:縦とする)は2:3と縦長である。これは、表示に使われるフォントが(12:18) * textScale [px]であるため。正方形ピクセルでの表示を前提とする一般的な画像を単純に1ピクセル=1ドットで表示しようとすると縦長に表示されてしまう。
正方形ピクセルで描かれた画像を画面上で同じように表示するためには、以下の方法がある。
- 元画像を1.5:1の比率で変形する(サイズが大きく、細密な画像向き)。
横を1.5倍した後、横縦を等倍率で拡大/縮小すればいい。
例えば元画像が4:3の場合、変形後は6:3(=2:1)のサイズになり、それを画面に表示すると4:3になる
- 画面上の横3文字*縦2文字を1ドットと見なす(サイズが小さい、いわゆる「ドット絵」向き)。
3:2 * 2:3 = 1:1 で正方形ピクセルと同等になる
使用できる色は、ComputerおよびTurtle、Monitorが白と黒のみ(他の色を表示させようとするとエラー)、Advanced ComputerおよびAdvanced Monitorが16色。色の指定にはColors APIの
色定数を使用できる。
loadImage
- paintutils.loadImage( path )
- path(文字列)のイメージファイルを読み込み、ドット絵データのテーブルを返す
- 戻り値:テーブル型。読み込んだファイルのドット絵データ。
読み込めるイメージファイルは、paintプログラムで保存されるファイルの形式。
戻り値のデータを画面に描画するには後述のpaintutils.drawImage()を使う。
イメージファイルの形式
イメージファイルはプレーンテキスト形式。一文字([0-9a-f]。a-fは必ず小文字)が1ドット分の色データとなり、一行(次の改行コードまで)が画面上の一行分のデータとなる。文字と色の対応は
こちらを参照。
戻り値のテーブルの構造
戻り値のテーブルの要素は、各行のデータを表すテーブルである。行のデータを表すテーブルの要素は、その行内の各ドットの色を表すColors APIの
色定数(数値)である。
例えば以下のようなイメージファイルの場合、
0123
4567
89ab
cdef
戻り値のテーブルは以下のようになる。
{ { 1, 2, 4, 8 },
{ 16, 32, 64, 128 },
{ 256, 512, 1024, 2048 },
{ 4096, 8192, 16384, 32768 } }
drawImage
- paintutils.drawImage( image, x, y )
- ドット絵データimage(テーブル)を画面上の座標x(数値), y(数値)の位置から描画する
- 戻り値:nil
imageはpaintutils.loadImage()の戻り値。描画位置は座標x, yに左上角のドットが描画される。ちなみに画面左上は 1, 1 。
関数から戻った後の背景色は最後に描画したドットの色になる。また、カーソル位置も最後に描画したドットの次の位置になる。
例
image = paintutils.loadImage( "bar" )
paintutils.drawImage( image, 3, 5 )
イメージファイルbarからドット絵データを読み込み、それを画面上の座標 3, 5 の位置から描画する。
drawPixel
- paintutils.drawPixel( x, y[, color] )
- 画面上の座標x(数値), y(数値)にドットを描画する。color(数値、Colors APIの色定数)で描画するドットの色を指定できる(省略可)
- 戻り値:nil
colorを省略すると現在の背景色で描画される。colorを指定するとその色で描画され、それ以降の背景色も colorの色になる。
カーソル位置は最後に描画したドットの次の位置になる。
drawLine
- paintutils.drawLine( startX, startY, endX, endY[, color] )
- 画面上の座標startX(数値), startY(数値)から endX(数値), endY(数値)までの直線を描画する。color(数値、Colors APIの色定数)で描画する線の色を指定できる(省略可)
- 戻り値:nil
colorを省略すると現在の背景色で描画される。colorを指定するとその色で描画され、それ以降の背景色も colorの色になる。
カーソル位置は最後に描画したドットの次の位置になる。
最終更新:2013年07月13日 01:59