ThemePackを実装するための基本的な考えを説明します。

目次

背景

1. ウィンドウサイズに依存しないGUIを実装するための課題

Processingでは以下のコードを使用してウィンドウサイズを変更可能にすることができます:

surface.setResizable(true);

しかし、この関数を実行するだけでは、ウィンドウのサイズを変更した際にレイアウトが崩れてしまう問題があります。

image.png

これは、rect関数やellipse関数が引数として(0, 0)からの絶対座標を受け取っているためです。

2. ウィンドウサイズに依存しないGUIを実装するために

Shape Toolでは、ウィンドウの大きさや比率に依存しない動的なGUIを実装することができます。

image.png

ここでは、ウィンドウサイズに依存しないGUIを作成するためにShape Toolで利用されている仕組みを紹介します。


作られた仕組み

1. コンテナ

コンテナとは、ボタンをやbaseオブジェクトを格納するための大きな箱のようなものです。コンテナ内のオブジェクトの位置はcontainerAnkerから見た相対座標で決定されます。