Big Surか、それ以外か。##
すべての説明は下記のJUCEフォーラムのポストにある通りで、現状Logic Pro XはBig Surでないとまともにリサイズ可能なプラグインを扱えない。残念ながら。
プラグイン内部からリサイズを仕掛けても、AU(v2)だと正常にリサイズができるコードでもAUv3だとリサイズができない。このことはAUv3の普及を妨げているとしか思えないが、現状はそういう感じでBig Surより前のOSではAUv3はあまり良い動作をしてくれない。
Big Surで動いたコード##
下記がBig Surでホスト(Logic Pro X)からリサイズがまともに動いたコード。プラグインエディタのコンストラクタで行っている。
HogeAudioProcessorEditor.cpp
int defaultWidth = 1024;
int defaultHeight = 768;
double ratio = (double)defaultWidth / (double)defaultHeight;
setResizable (true, false);
setResizeLimits (defaultWidth / 2,
defaultHeight / 2,
defaultWidth * 2,
defaultHeight * 2);
getConstrainer()->setFixedAspectRatio (ratio);
こうすることでプラグインのウィンドウがリサイズ可能になり、リサイズ時にresized()が呼ばれる。それを受けてUIを再配置する…のはめんどくさいと思ったでしょ?思うよ。なので、Logicの内蔵プラグインがやっているような単純な拡大縮小を行うには、resized()で下記のようにすればよい。前提として、エディタ全体を覆うComponentを持っているものとする。
HogeAudioProessorEditor.cpp
int width = getWidth();
double scale = (double)width / (double)mainComponent->getWidth();
mainComponent->setTransform(AffineTransform::scale(scale, scale));