goで aalibのバインディングを書いてみました

引き続き goの学習ということで aalibバインディングを書いてみました。

サンプルコード

package main

import "github.com/syohex/go-aalib"
import "image"
import _ "image/png"
import "fmt"
import "os"

func main() {
	file, err := os.Open("gopher.png")
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
	defer file.Close()

	// Decode the image.
	goPng, _, err := image.Decode(file)
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	handle, _ := aalib.Init(80, 50, aalib.AA_NORMAL_MASK)
	handle.PutImage(goPng)
	handle.Render(nil, 0, 0, 96, 96)
	aaStr := handle.Text()
	fmt.Println(aaStr)
}

結果

goのマスコットの画像を AA化してみました
(ちゃんと見えるようにフォントを小さくしています)

おわりに

Perlがややこしすぎるというのがあるのであれですが、goで C言語バインディング
書くのは Perlに比べるとずっと楽でした。簡単に C言語のシンボルにアクセスできる
のもそうですが、覚えることが少ないというのが Perlに比べてずっと楽でした。
まだ全然慣れていないのでエラー出力がよくわからない等で苦労もしましたが、
慣れればだいぶ楽に書けるのではないかなと思いました。