任意のフォントの利用
VST GUIにおいてテキストを表示させるコントロールのフォントを変更する方法を説明いたします。
なお、VST GUIの基本的な作成方法、テキストラベルコントロールの作成方法として下記をご理解いただいている前提で進めさせていただきます。
フォントを変更すると下記のようになります。
同様の手順でテキストエディット、コンボボックス、チェックボックス等のコントロールのフォントも変更可能です。
まず、フォントを読み込みます。
VST GUIクラスにフォント用の変数を定義し、コンストラクタでCFontDescクラスを作成します。
【guieditor.h】
1 2 3 4 5 6 7 |
class MyVSTGUIEditor : public VSTGUIEditor, public IControlListener { ~~ 中略 ~~ protected: CFontDesc *font; } |
【guieditor.cpp】
1 2 3 4 5 6 7 |
MyVSTGUIEditor::MyVSTGUIEditor(void* controller) : VSTGUIEditor(controller) { ~~ 中略 ~~ font = new CFontDesc("MS Gothic", 11); // 「MS ゴシック」フォントを作成。フォント名は英名で指定する必要がある。 } |
フォントを指定する際、フォント名を英名で指定する必要があります。
これはVST GUIの言語・地域設定が「en-us」でハードコーディングされているためです。
CFontDescクラスのコンストラクタは下記になります。
- CFontDescコンストラクタ
概要 | フォントクラスであるCFontDescのコンストラクタ | ||
---|---|---|---|
引数 | 型 | 変数名 | 概要 |
UTF8StringPtr | name | フォントの名前。フォント名は英名で指定する必要がある | |
CCoord | size | フォントサイズ。省略すると 0 となる。 | |
int32_t | style | フォントのスタイル。 省略するとkNormalFaceとなる。 スタイルにはkBoldFace(太字)、kItalicFace(斜体)、kUnderlineFace(下線)、kStrikethroughFace(取消線)がある。 フラグ形式のためor( | )で複数のスタイルを設定可能。 |
続いて、テキストラベルコントロールの作成と読み込んだフォントの適用を行います。
VST GUIクラスのOpen関数内で、フレーム作成後、テキストラベルコントロールを「createTextLabel」で作成します。
作成時のテキストラベルコントロール(CTextLabel)のポインタを取得しておきます。
(「createTextLabel」は「テキストラベルの実装」を参照。)
そして、テキストラベルコントロールのsetFont関数を使用してフォントを適用します。
【guieditor.cpp】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
bool PLUGIN_API MyVSTGUIEditor::open(void* parent, const PlatformType& platformType) { // GUIウィンドウが開かれたときに、UIを作成する ~~ 中略 ~~ // --------------------------------------------- // ここから各コントロールの作成 CTextLabel* textlabel = (CTextLabel*)createTextLabel(10, 30, u8"text"); textlabel->setFont(font); ~~ 中略 ~~ // GUIウィンドウのオープンに成功した場合はtrueを返す return true; } |
使用後のフォント(CFontDescクラス)は解放する必要があります。VST GUIクラスのデストラクタなどでforget関数を呼び出して解放します。
【guieditor.cpp】
1 2 3 4 |
MyVSTGUIEditor::~MyVSTGUIEditor() { font->forget(); } |
以上でテキストラベルコントロールのフォントを変更することができます。
上記以外にもVST3.6についての情報があります。下記をご参照ください。
また、質問やご指摘はコメント欄や掲示板、Twitterでいただけばとおもいます。
■掲示板
■Twitterアカウント:@vstcpp URL:https://twitter.com/vstcpp