import "exp/draw"

drawパッケージは、X Render extension、およびPlan 9グラフィックスライブラリ(参照: http://plan9.bell-labs.com/magic/man2html/2/draw)スタイルの基本グラフィックスと描画プリミティブを提供します。

パッケージファイル

draw.go event.go

Border関数

func Border(dst Image, r image.Rectangle, w int, src image.Image, sp image.Point)

Borderは、srcのspを使ってdst内にr.Minを配置し、次にdst内のrの周囲からwピクセルの境界をPorter-Duffコンポジション演算「src over dst」の結果で置き換えます。wがプラス値であれば、rからwピクセル内側に境界線を拡張します。wがマイナス値であれば、rの外側にwピクセル境界を広げます。

Draw関数

func Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point)

Drawは、DrawMaskをmaskをnil、opをOverで呼び出します。

DrawMask関数

func DrawMask(dst Image, r image.Rectangle, src image.Image, sp image.Point, mask image.Image, mp image.Point, op Op)

DrawMaskは、srcのsp、maskのmpを使ってdst内にr.Minを配置し、次にdstの矩形rをPorter-Duffコンポジションの結果で置換します。maskにnilを指定したときは透明として扱われます。

ConfigEvent型

ConfigEventは、ウィンドウのカラーモデル、またはサイズが変更される度に送信されます。クライアント側は応答として、indow.Screenを呼び出し、新しいイメージを得なければなりません。

type ConfigEvent struct {
    Config image.Config
}

ErrEvent型

ErrEventは、エラーが起きたときに送信されます。

type ErrEvent struct {
    Err os.Error
}

Image型

draw.Imageは、ピクセル一つを変更するSetメソッドを持つimage.Imageです。

type Image interface {
    image.Image
    Set(x, y int, c image.Color)
}

KeyEvent型

KeyEventは、キーが押されたか、放されたときに送信されます。

type KeyEvent struct {
    // 値kは、キーkが押されたことを表します。
    // 値-kは、キーkが放されたことを表します。
    // キー値のセットについては規定されていませんが、
    // 通常、文字そのものを表します。
    Key int
}

MouseEvent型

MouseEventは、マウスのボタンが押されたか、放されたか、移動したときに送信されます。

type MouseEvent struct {
    // Buttonsは、ボタンのビットマスクです。: 1<<0 左、 1<<1 中、 1<<2 右
    // これは、ボタンの状態を表しますが、必ずしも状態の変化を伝える訳ではありません。
    // すなわち、ビット0がONが意味するのは、左マウスボタンが押されたと言うことであり、
    // 直前のMouseEventでこのボタンが放されていたことを意味してはいません。
    Buttons int
    // Locは、カーソルの位置です。
    Loc image.Point
    // Nsecは、このイベントのタイムスタンプです。
    Nsec int64
}

Op型

Porter-Duffコンポジションの演算子です。

type Op int
const (
    // Overの定義は、"(src in mask) over dst"
    Over Op = iota
    // Srcの定義は、"src in mask"
    Src
)

Window型

Windowは、グラフィックウィンドウひとつを表します。

type Window interface {
    // Screenは、ウィンドウの編集可能なイメージを返します。
    Screen() Image
    // FlushImageは、Screen()が返すスクリーンに加えた変更をフラッシュします。
    FlushImage()
    // EventChanは、キー押下、マウス移動、ウィンドウのリサイズなどのUIイベントを
    // 受け取るためのチャネルを返します。
    EventChan() <-chan interface{}
    // Closeは、ウィンドウをクローズします。
    Close() os.Error
}