ドキュメント
GuiTemplateNo[XXX]Component
4 min read
GuiTemplateNo[XXX]Componentは配置を決めるコンポーネントです。以下のコンポーネントが標準で準備されています。GuiTemplateNo[XXX]Componentを作成する場合はボックスコンポーネントなど必ず背景色を透明にしてください。高レイヤになるためスクロール、スケールコンポーネントなどが塗り潰し状態となります。
- GuiTemplateNo001Component
- GuiTemplateNo002Component
GuiTemplateNo001Componentはプレーンなコンポーネントです。
gui_template_no001_component.hpp
class GuiTemplateNo001Component : public Component
{
public:
GuiTemplateNo001Component
(
MOD mod,
unsigned int content_width,
unsigned int content_height,
FcComponent contents
);
~GuiTemplateNo001Component() = default;
GuiTemplateNo001Component(GuiTemplateNo001Component const&);
GuiTemplateNo001Component& operator=(GuiTemplateNo001Component const&);
void configure();
private:
std::unique_ptr<BoxComponent> box;
FcComponent contents;
};
contentsを指定した幅、高さで中央配置します。
gui_template_no001_component.cpp
GuiTemplateNo001Component::GuiTemplateNo001Component
(
MOD mod,
unsigned int content_width,
unsigned int content_height,
FcComponent contents
) : Component(mod)
, contents{ contents }
{
box = std::make_unique<BoxComponent>(
mod
, content_width
, content_height
, Theme().window_bg_color_R
, Theme().window_bg_color_G
, Theme().window_bg_color_B
, 0
, spa::gui::box::POS::CENTER);
}
void GuiTemplateNo001Component::configure()
{
attach(box.get());
box->attach(contents());
}
GuiTemplateNo002Componentはメインヘッダーとコンテンツエリアがあるコンポーネントです。
gui_template_no002_component.hpp
class GuiTemplateNo002Component : public Component
{
public:
GuiTemplateNo002Component
(
MOD mod,
unsigned int width,
unsigned int header_height,
unsigned int content_height,
FcComponent header,
FcComponent contents
);
~GuiTemplateNo002Component() = default;
GuiTemplateNo002Component(GuiTemplateNo002Component const&);
GuiTemplateNo002Component& operator=(GuiTemplateNo002Component const&);
void configure();
private:
std::unique_ptr<BoxComponent> box;
std::unique_ptr<BoxComponent> header_box;
std::unique_ptr<BoxComponent> contents_box;
FcComponent header;
FcComponent contents;
};
幅、ヘッダーの高さ、コンテンツの高さ、ヘッダー、コンテンツを指定します。
gui_template_no002_component.cpp
GuiTemplateNo002Component::GuiTemplateNo002Component
(
MOD mod,
unsigned int width,
unsigned int header_height,
unsigned int content_height,
FcComponent header,
FcComponent contents
) : Component(mod)
, header{ header }
, contents{ contents }
{
box = std::make_unique<BoxComponent>(
mod
, width
, header_height + content_height
, Theme().window_bg_color_R
, Theme().window_bg_color_G
, Theme().window_bg_color_B
, 0//Theme().window_bg_color_A
, spa::gui::box::POS::CENTER);
header_box = std::make_unique<BoxComponent>(
mod
, width
, header_height
, Theme().window_bg_color_R
, Theme().window_bg_color_G
, Theme().window_bg_color_B
, 0//Theme().window_bg_color_A
, spa::gui::box::POS::TOP);
contents_box = std::make_unique<BoxComponent>(
mod
, width
, content_height
, Theme().window_bg_color_R
, Theme().window_bg_color_G
, Theme().window_bg_color_B
, 0//Theme().window_bg_color_A
, spa::gui::box::POS::BOTTOM);
}
void GuiTemplateNo002Component::configure()
{
attach(box.get());
box->attach(header_box.get());
box->attach(contents_box.get());
header_box->attach(header());
contents_box->attach(contents());
}
コメントを残す