LoginSignup
0
1

More than 1 year has passed since last update.

JUCEで作成したAUv3プラグインのウィンドウのリサイズ問題

Posted at

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));
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1