ドキュメント

View Categories

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());
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です