2015-11-21 01:14:49 +00:00
|
|
|
#ifndef SPECTER_ROOTVIEW_HPP
|
|
|
|
#define SPECTER_ROOTVIEW_HPP
|
|
|
|
|
|
|
|
#include "View.hpp"
|
2015-11-29 02:55:30 +00:00
|
|
|
#include "MultiLineTextView.hpp"
|
2015-12-02 01:32:15 +00:00
|
|
|
#include "SplitView.hpp"
|
2015-11-22 04:32:12 +00:00
|
|
|
#include "FontCache.hpp"
|
2015-12-01 00:35:45 +00:00
|
|
|
#include "DeferredWindowEvents.hpp"
|
2015-11-21 01:14:49 +00:00
|
|
|
#include <boo/boo.hpp>
|
|
|
|
|
|
|
|
namespace Specter
|
|
|
|
{
|
2015-12-02 01:32:15 +00:00
|
|
|
class ViewResources;
|
2015-11-21 01:14:49 +00:00
|
|
|
|
2015-12-01 00:35:45 +00:00
|
|
|
class RootView : public View
|
2015-11-21 01:14:49 +00:00
|
|
|
{
|
2015-11-21 23:45:02 +00:00
|
|
|
boo::IWindow* m_window = nullptr;
|
2015-11-26 07:35:43 +00:00
|
|
|
boo::ITextureR* m_renderTex = nullptr;
|
2015-12-01 00:35:45 +00:00
|
|
|
boo::SWindowRect m_rootRect = {};
|
2015-11-26 07:35:43 +00:00
|
|
|
bool m_resizeRTDirty = false;
|
2015-11-26 23:03:56 +00:00
|
|
|
bool m_destroyed = false;
|
2015-11-21 23:45:02 +00:00
|
|
|
|
2015-12-01 00:35:45 +00:00
|
|
|
DeferredWindowEvents<RootView> m_events;
|
|
|
|
|
2015-11-26 07:35:43 +00:00
|
|
|
public:
|
2015-12-02 01:32:15 +00:00
|
|
|
RootView(ViewResources& res, boo::IWindow* window);
|
2015-11-30 00:21:42 +00:00
|
|
|
|
2015-11-26 23:03:56 +00:00
|
|
|
void destroyed();
|
|
|
|
bool isDestroyed() const {return m_destroyed;}
|
|
|
|
|
|
|
|
void resized(const boo::SWindowRect& root, const boo::SWindowRect& sub);
|
2015-11-21 01:14:49 +00:00
|
|
|
void mouseDown(const boo::SWindowCoord& coord, boo::EMouseButton button, boo::EModifierKey mods);
|
|
|
|
void mouseUp(const boo::SWindowCoord& coord, boo::EMouseButton button, boo::EModifierKey mods);
|
|
|
|
void mouseMove(const boo::SWindowCoord& coord);
|
|
|
|
void mouseEnter(const boo::SWindowCoord& coord);
|
|
|
|
void mouseLeave(const boo::SWindowCoord& coord);
|
|
|
|
void scroll(const boo::SWindowCoord& coord, const boo::SScrollDelta& scroll);
|
|
|
|
|
|
|
|
void touchDown(const boo::STouchCoord& coord, uintptr_t tid);
|
|
|
|
void touchUp(const boo::STouchCoord& coord, uintptr_t tid);
|
|
|
|
void touchMove(const boo::STouchCoord& coord, uintptr_t tid);
|
|
|
|
|
|
|
|
void charKeyDown(unsigned long charCode, boo::EModifierKey mods, bool isRepeat);
|
|
|
|
void charKeyUp(unsigned long charCode, boo::EModifierKey mods);
|
|
|
|
void specialKeyDown(boo::ESpecialKey key, boo::EModifierKey mods, bool isRepeat);
|
|
|
|
void specialKeyUp(boo::ESpecialKey key, boo::EModifierKey mods);
|
|
|
|
void modKeyDown(boo::EModifierKey mod, bool isRepeat);
|
|
|
|
void modKeyUp(boo::EModifierKey mod);
|
2015-11-21 23:45:02 +00:00
|
|
|
|
2015-12-02 21:11:50 +00:00
|
|
|
void resetResources(ViewResources& res);
|
2015-12-01 00:35:45 +00:00
|
|
|
void dispatchEvents() {m_events.dispatchEvents();}
|
2015-11-21 23:45:02 +00:00
|
|
|
void draw(boo::IGraphicsCommandQueue* gfxQ);
|
2015-11-30 00:21:42 +00:00
|
|
|
const boo::SWindowRect& rootRect() const {return m_rootRect;}
|
2015-11-22 04:32:12 +00:00
|
|
|
|
2015-11-30 00:21:42 +00:00
|
|
|
boo::IWindow* window() const {return m_window;}
|
2015-11-29 02:55:30 +00:00
|
|
|
|
2015-11-30 00:21:42 +00:00
|
|
|
private:
|
|
|
|
std::unique_ptr<SplitView> m_splitView;
|
2015-11-21 01:14:49 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // SPECTER_ROOTVIEW_HPP
|