#pragma once
#include "libs.h"

 namespace Gui {

  namespace Theme {
    void DrawIndent(const float size[2]);
    void DrawOutdent(const float size[2]);
    void DrawHollowRect(const float size[2]);
  }

  namespace Color {
    extern const float bg[];
    extern const float bgShadow[];
  }

  void HandleSDLEvent(SDL_Event* event);
  void Draw(void);
  void AddTimer(Uint32 ms, sigc::signal<void>* s);
  void RemoveTimer(sigc::signal<void>* s);
  void Init(int screen_width, int screen_height, int ui_width, int ui_height);
 }

#include "gui_events.h"

namespace Gui {
  namespace RawEvents {
    extern sigc::signal<void, MouseMotionEvent*>  onMouseMotion;
    extern sigc::signal<void, MouseButtonEvent*>  onMouseDown;
    extern sigc::signal<void, MouseButtonEvent*>  onMouseUp;
    extern sigc::signal<void, SDL_KeyboardEvent*>     onKeyDown;
    extern sigc::signal<void, SDL_KeyboardEvent*>     onKeyUp;
  }
}

#include "gui_widget.h"
#include "GuiAdjustment.h"
#include "gui_image.h"
#include "gui_button.h"
#include "gui_toggle_button.h"
#include "gui_multi_state_image_button.h"
#include "gui_image_button.h"
#include "gui_iselectable.h"
#include "gui_radio_button.h"
#include "gui_image_radio_button.h"
#include "gui_radio_group.h"
#include "gui_fixed.h"
#include "gui_vscroll_portal.h"
#include "gui_vscroll_bar.h"
#include "gui_label.h"
#include "gui_tooltip.h"
#include "gui_screen.h"