ThemePackを実装するための基本的な考えを説明します。
目次
Processingでは以下のコードを使用してウィンドウサイズを変更可能にすることができます:
surface.setResizable(true);
しかし、この関数を実行するだけでは、ウィンドウのサイズを変更した際にレイアウトが崩れてしまう問題があります。

これは、rect関数やellipse関数が引数として(0, 0)からの絶対座標を受け取っているためです。
Shape Toolでは、ウィンドウの大きさや比率に依存しない動的なGUIを実装することができます。

ここでは、ウィンドウサイズに依存しないGUIを作成するためにShape Toolで利用されている仕組みを紹介します。
コンテナとは、ボタンをやbaseオブジェクトを格納するための大きな箱のようなものです。コンテナ内のオブジェクトの位置はcontainerAnkerから見た相対座標で決定されます。