wp_viewporter (ver 1)

wp_viewporter
wp_viewporter_destroy破棄
wp_viewporter_get_viewportwp_viewport を作成
wp_viewport
wp_viewport_destroy破棄
wp_viewport_set_sourceソース矩形のセット
wp_viewport_set_destination宛先のサイズをセット
wl_buffer の任意の範囲を切り取ってサーフェスの内容にしたり、任意の範囲を拡大縮小して出力することができる。
wp_viewporter
void wp_viewporter_destroy(struct wp_viewporter *wp_viewporter);
破棄
struct wp_viewport *wp_viewporter_get_viewport(struct wp_viewporter *wp_viewporter, struct wl_surface *surface);
wp_viewport を作成。

指定された wl_surface のインターフェース拡張をインスタンス化して、その内容をトリミングおよび拡大縮小する。
wp_viewport オブジェクトがすでに関連付けられている場合は、viewport_exists プロトコルエラーが発生する。
wp_viewport
void wp_viewport_destroy(struct wp_viewport *wp_viewport);
関連する wl_surface のトリミングと拡大縮小の状態が削除される。
変更は次の wl_surface_commit() に適用される。
void wp_viewport_set_source(struct wp_viewport *wp_viewport, wl_fixed_t x, wl_fixed_t y, wl_fixed_t width, wl_fixed_t height);
ソース矩形を設定する。
wl_buffer のどの範囲をソースにするか。

ソース矩形の外側の内容は無視される。

x, y, width, height がすべて -1.0 の場合、ソース矩形は設定解除される。
width or height が 0 または負、または、x or y が負である場合、bad_value プロトコルエラー。
宛先サイズが設定されていない場合、width, height は整数値であること。

トリミングと拡大縮小の状態はダブルバッファリングされる。

座標変換は、以下の順で行われる。
buffer_transform (wl_surface.set_buffer_transform)
buffer_scale (wl_surface.set_buffer_scale)
crop and scale (wp_viewport.set*)
void wp_viewport_set_destination(struct wp_viewport *wp_viewport, int32_t width, int32_t height);
宛先サイズを設定する。

サーフェスのサイズは指定サイズになり、拡大縮小される。
wl_buffer が NULL でない限り、wl_buffer のサイズを上書きする。

width = -1 & height = -1 の場合、宛先サイズは設定されない。
width と height が 0 以下の場合、bad_value プロトコルエラー。