Update widgets
This commit is contained in:
parent
35cb553ecb
commit
0f8fb5c580
18 changed files with 171 additions and 124 deletions
|
|
@ -27,7 +27,7 @@ public:
|
||||||
mGui->setArea(rec);
|
mGui->setArea(rec);
|
||||||
mGui->setVisible(true);
|
mGui->setVisible(true);
|
||||||
mGui->updateConfigWrapper(mWidgetManager);
|
mGui->updateConfigWrapper(mWidgetManager);
|
||||||
mGui->procWrapper(*eventHandler);
|
mGui->procWrapper(*eventHandler, rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawFrame(Canvas* canvas) override { mGui->drawWrapper(*canvas); }
|
void drawFrame(Canvas* canvas) override { mGui->drawWrapper(*canvas); }
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,9 @@ namespace tp {
|
||||||
|
|
||||||
~ViewportWidget() { mCanvas->deleteImageHandle(mImage); }
|
~ViewportWidget() { mCanvas->deleteImageHandle(mImage); }
|
||||||
|
|
||||||
void procCallback(const Events& events) override { mGeometry->mCamera.rotate(0.01f, 0.0); }
|
void eventProcess(const Events& events) override { mGeometry->mCamera.rotate(0.01f, 0.0); }
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override {
|
void eventDraw(Canvas& canvas) override {
|
||||||
mRender.render(*mGeometry, this->mArea.size);
|
mRender.render(*mGeometry, this->mArea.size);
|
||||||
canvas.drawImage(this->mArea, &mImage, PI);
|
canvas.drawImage(this->mArea, &mImage, PI);
|
||||||
}
|
}
|
||||||
|
|
@ -40,14 +40,14 @@ namespace tp {
|
||||||
this->mChildWidgets.pushBack(&mSplitView);
|
this->mChildWidgets.pushBack(&mSplitView);
|
||||||
}
|
}
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
mSplitView.setArea(this->mArea);
|
mSplitView.setArea(this->mArea);
|
||||||
mViewport.setArea(mSplitView.getFirst());
|
mViewport.setArea(mSplitView.getFirst());
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override { canvas.rect(this->mArea, mBaseColor); }
|
void eventDraw(Canvas& canvas) override { canvas.rect(this->mArea, mBaseColor); }
|
||||||
|
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("3DEditor");
|
wm.setActiveId("3DEditor");
|
||||||
mBaseColor = wm.getColor("Base", "Base");
|
mBaseColor = wm.getColor("Base", "Base");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,16 +21,16 @@ bool EventHandler::isEvents() {
|
||||||
|
|
||||||
InputState::State transitions[4][4] = {
|
InputState::State transitions[4][4] = {
|
||||||
{ InputState::State::NONE, InputState::State::PRESSED, InputState::State::PRESSED, InputState::State::NONE },
|
{ InputState::State::NONE, InputState::State::PRESSED, InputState::State::PRESSED, InputState::State::NONE },
|
||||||
{ InputState::State::PRESSED, InputState::State::PRESSED, InputState::State::HOLD, InputState::State::PRESSED },
|
{ InputState::State::PRESSED, InputState::State::HOLD, InputState::State::HOLD, InputState::State::HOLD },
|
||||||
{ InputState::State::HOLD, InputState::State::RELEASED, InputState::State::RELEASED, InputState::State::HOLD },
|
{ InputState::State::HOLD, InputState::State::HOLD, InputState::State::HOLD, InputState::State::RELEASED },
|
||||||
{ InputState::State::RELEASED, InputState::State::NONE, InputState::State::NONE, InputState::State::RELEASED },
|
{ InputState::State::NONE, InputState::State::NONE, InputState::State::NONE, InputState::State::NONE },
|
||||||
};
|
};
|
||||||
|
|
||||||
bool transitionsReduce[4][4] = {
|
bool transitionsReduce[4][4] = {
|
||||||
{ true, true, false, true },
|
|
||||||
{ true, true, false, true },
|
|
||||||
{ true, false, false, true },
|
{ true, false, false, true },
|
||||||
{ true, false, true, true },
|
{ true, true, true, false },
|
||||||
|
{ true, true, true, false },
|
||||||
|
{ true, true, true, true },
|
||||||
};
|
};
|
||||||
|
|
||||||
void EventHandler::processEvent() {
|
void EventHandler::processEvent() {
|
||||||
|
|
@ -55,6 +55,8 @@ void EventHandler::processEvent() {
|
||||||
|
|
||||||
mInputStates[(int) inputId].mCurrentState = transitions[currentState][reportedEvent];
|
mInputStates[(int) inputId].mCurrentState = transitions[currentState][reportedEvent];
|
||||||
|
|
||||||
|
// printf("%i - %i \n", reportedEvent, mInputStates[(int) InputID::A].mCurrentState);
|
||||||
|
|
||||||
if (transitionsReduce[currentState][reportedEvent]) {
|
if (transitionsReduce[currentState][reportedEvent]) {
|
||||||
mEventQueue.popFront();
|
mEventQueue.popFront();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ namespace tp {
|
||||||
enum class ButtonAction {
|
enum class ButtonAction {
|
||||||
NONE = 0,
|
NONE = 0,
|
||||||
PRESS,
|
PRESS,
|
||||||
|
HOLD,
|
||||||
RELEASE,
|
RELEASE,
|
||||||
REPEAT,
|
REPEAT,
|
||||||
} buttonAction = ButtonAction::NONE;
|
} buttonAction = ButtonAction::NONE;
|
||||||
|
|
@ -61,7 +62,6 @@ namespace tp {
|
||||||
~EventHandler();
|
~EventHandler();
|
||||||
|
|
||||||
public: // Event Poster Interface
|
public: // Event Poster Interface
|
||||||
|
|
||||||
// Record event
|
// Record event
|
||||||
void postEvent(InputID inputID, InputEvent inputEvent);
|
void postEvent(InputID inputID, InputEvent inputEvent);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ public:
|
||||||
gui.setVisible(true);
|
gui.setVisible(true);
|
||||||
gui.setArea(rec);
|
gui.setArea(rec);
|
||||||
gui.updateConfigWrapper(mWidgetManager);
|
gui.updateConfigWrapper(mWidgetManager);
|
||||||
gui.procWrapper(*eventHandler);
|
gui.procWrapper(*eventHandler, rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawFrame(Canvas* canvas) override { gui.drawWrapper(*canvas); }
|
void drawFrame(Canvas* canvas) override { gui.drawWrapper(*canvas); }
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ namespace tp {
|
||||||
col.mColor.setNoTransition({ 0.15f, 0.15f, 0.15f, 0.f });
|
col.mColor.setNoTransition({ 0.15f, 0.15f, 0.15f, 0.f });
|
||||||
};
|
};
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
mSelected = false;
|
mSelected = false;
|
||||||
if (!mTrack) return;
|
if (!mTrack) return;
|
||||||
if (this->mArea.isInside(events.getPointer())) {
|
if (this->mArea.isInside(events.getPointer())) {
|
||||||
|
|
@ -29,7 +29,7 @@ namespace tp {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override {
|
void eventDraw(Canvas& canvas) override {
|
||||||
if (!mTrack) return;
|
if (!mTrack) return;
|
||||||
|
|
||||||
canvas.rect(this->mArea, col.get(), 4.f);
|
canvas.rect(this->mArea, col.get(), 4.f);
|
||||||
|
|
@ -76,7 +76,7 @@ namespace tp {
|
||||||
items.append({ "Date Last Played" });
|
items.append({ "Date Last Played" });
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas&) override {
|
void eventDraw(Canvas&) override {
|
||||||
if (!mTrack) return;
|
if (!mTrack) return;
|
||||||
// canvas.rect(this->mArea, { 0.13f, 0.13f, 0.13f, 1.f }, 4.f);
|
// canvas.rect(this->mArea, { 0.13f, 0.13f, 0.13f, 1.f }, 4.f);
|
||||||
renderUI();
|
renderUI();
|
||||||
|
|
@ -210,7 +210,7 @@ namespace tp {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
filter();
|
filter();
|
||||||
|
|
||||||
mSplitView.setArea(this->mArea);
|
mSplitView.setArea(this->mArea);
|
||||||
|
|
@ -228,7 +228,7 @@ namespace tp {
|
||||||
// mCurrentTrack.proc(events, this->mArea, mSplitView.getFirst());
|
// mCurrentTrack.proc(events, this->mArea, mSplitView.getFirst());
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override { canvas.rect(this->mArea, { 0.1f, 0.1f, 0.1f, 1.f }); }
|
void eventDraw(Canvas& canvas) override { canvas.rect(this->mArea, { 0.1f, 0.1f, 0.1f, 1.f }); }
|
||||||
|
|
||||||
void filter() {
|
void filter() {
|
||||||
if (!mCurrentTrackInfo.isSongFilterChanged) return;
|
if (!mCurrentTrackInfo.isSongFilterChanged) return;
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ public:
|
||||||
mGui.setVisible(true);
|
mGui.setVisible(true);
|
||||||
mGui.setArea(rec);
|
mGui.setArea(rec);
|
||||||
mGui.updateConfigWrapper(mWidgetManager);
|
mGui.updateConfigWrapper(mWidgetManager);
|
||||||
mGui.procWrapper(*eventHandler);
|
mGui.procWrapper(*eventHandler, rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawFrame(Canvas* canvas) override { mGui.drawWrapper(*canvas); }
|
void drawFrame(Canvas* canvas) override { mGui.drawWrapper(*canvas); }
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ namespace tp {
|
||||||
|
|
||||||
~Sketch3DWidget() { mCanvas->deleteImageHandle(mImage); }
|
~Sketch3DWidget() { mCanvas->deleteImageHandle(mImage); }
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
if (!this->mArea.isInside(events.getPointer())) {
|
if (!this->mArea.isInside(events.getPointer())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -71,7 +71,7 @@ namespace tp {
|
||||||
mActionPosAbsolutePrev = absolutePos;
|
mActionPosAbsolutePrev = absolutePos;
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override {
|
void eventDraw(Canvas& canvas) override {
|
||||||
mRenderer.renderToTexture(&mProject, this->mArea.size);
|
mRenderer.renderToTexture(&mProject, this->mArea.size);
|
||||||
canvas.drawImage(this->mArea, &mImage, 0, 1, 12);
|
canvas.drawImage(this->mArea, &mImage, 0, 1, 12);
|
||||||
}
|
}
|
||||||
|
|
@ -126,27 +126,27 @@ namespace tp {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
mSplitView.setArea(this->mArea);
|
mSplitView.setArea(this->mArea);
|
||||||
mViewport.setArea(mSplitView.getFirst());
|
mViewport.setArea(mSplitView.getFirst());
|
||||||
mOptions.setArea(mSplitView.getSecond());
|
mOptions.setArea(mSplitView.getSecond());
|
||||||
|
|
||||||
if (mDrawButton->mIsPressed) {
|
if (mDrawButton->isFired()) {
|
||||||
mViewport.mMode = Sketch3DWidget<Events, Canvas>::Mode::DRAW;
|
mViewport.mMode = Sketch3DWidget<Events, Canvas>::Mode::DRAW;
|
||||||
} else if (mMoveButton->mIsPressed) {
|
} else if (mMoveButton->isFired()) {
|
||||||
mViewport.mMode = Sketch3DWidget<Events, Canvas>::Mode::MOVE;
|
mViewport.mMode = Sketch3DWidget<Events, Canvas>::Mode::MOVE;
|
||||||
} else if (mRotateButton->mIsPressed) {
|
} else if (mRotateButton->isFired()) {
|
||||||
mViewport.mMode = Sketch3DWidget<Events, Canvas>::Mode::ROTATE;
|
mViewport.mMode = Sketch3DWidget<Events, Canvas>::Mode::ROTATE;
|
||||||
} else if (mZoomButton->mIsPressed) {
|
} else if (mZoomButton->isFired()) {
|
||||||
mViewport.mMode = Sketch3DWidget<Events, Canvas>::Mode::ZOOM;
|
mViewport.mMode = Sketch3DWidget<Events, Canvas>::Mode::ZOOM;
|
||||||
}
|
}
|
||||||
|
|
||||||
mViewport.setColor(RGBA(mRed->mSlider.mFactor, mGreen->mSlider.mFactor, mBlue->mSlider.mFactor, 1.f));
|
mViewport.setColor(RGBA(mRed->mSlider.mFactor, mGreen->mSlider.mFactor, mBlue->mSlider.mFactor, 1.f));
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override { canvas.rect(this->mArea, mBackgroundColor, mRounding); }
|
void eventDraw(Canvas& canvas) override { canvas.rect(this->mArea, mBackgroundColor, mRounding); }
|
||||||
|
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("Sketch3DGui");
|
wm.setActiveId("Sketch3DGui");
|
||||||
|
|
||||||
mBackgroundColor = wm.getColor("Background", "Background");
|
mBackgroundColor = wm.getColor("Background", "Background");
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ public:
|
||||||
mGui.setArea(rec);
|
mGui.setArea(rec);
|
||||||
mGui.setVisible(true);
|
mGui.setVisible(true);
|
||||||
|
|
||||||
mGui.procWrapper(*eventHandler);
|
mGui.procWrapper(*eventHandler, rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawFrame(Canvas* canvas) override { mGui.drawWrapper(*canvas); }
|
void drawFrame(Canvas* canvas) override { mGui.drawWrapper(*canvas); }
|
||||||
|
|
|
||||||
|
|
@ -9,19 +9,14 @@ namespace tp {
|
||||||
public:
|
public:
|
||||||
UserWidget() = default;
|
UserWidget() = default;
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
void eventDraw(Canvas& canvas) override {
|
||||||
this->mArea.w = 30;
|
if (this->isFocus()) canvas.rect(this->mArea, mAccentColor, mRounding);
|
||||||
mIsHover = this->mArea.isInside(events.getPointer());
|
|
||||||
}
|
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override {
|
|
||||||
if (mIsHover) canvas.rect(this->mArea, mAccentColor, mRounding);
|
|
||||||
else canvas.rect(this->mArea, mBaseColor, mRounding);
|
else canvas.rect(this->mArea, mBaseColor, mRounding);
|
||||||
canvas.text(mUser.c_str(), this->mArea, mFontSize, Canvas::CC, mPadding, mUserColor);
|
canvas.text(mUser.c_str(), this->mArea, mFontSize, Canvas::CC, mPadding, mUserColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("UserWidget");
|
wm.setActiveId("UserWidget");
|
||||||
|
|
||||||
mBaseColor = wm.getColor("Base", "Base");
|
mBaseColor = wm.getColor("Base", "Base");
|
||||||
|
|
@ -49,10 +44,8 @@ namespace tp {
|
||||||
public:
|
public:
|
||||||
MessageWidget() = default;
|
MessageWidget() = default;
|
||||||
|
|
||||||
void procCallback(const Events& events) override { mIsHover = this->mArea.isInside(events.getPointer()); }
|
void eventDraw(Canvas& canvas) override {
|
||||||
|
if (this->isFocus()) canvas.rect(this->mArea, mBaseColor, mRounding);
|
||||||
void drawCallback(Canvas& canvas) override {
|
|
||||||
if (mIsHover) canvas.rect(this->mArea, mBaseColor, mRounding);
|
|
||||||
|
|
||||||
auto userName = this->mArea;
|
auto userName = this->mArea;
|
||||||
userName.w = 25;
|
userName.w = 25;
|
||||||
|
|
@ -65,7 +58,7 @@ namespace tp {
|
||||||
canvas.text(mUser.c_str(), userName, mFontSizeDim, Canvas::LC, mPadding, mUserColor);
|
canvas.text(mUser.c_str(), userName, mFontSizeDim, Canvas::LC, mPadding, mUserColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("MessageWidget");
|
wm.setActiveId("MessageWidget");
|
||||||
|
|
||||||
mBaseColor = wm.getColor("Base", "Base");
|
mBaseColor = wm.getColor("Base", "Base");
|
||||||
|
|
@ -104,7 +97,7 @@ namespace tp {
|
||||||
this->mChildWidgets.pushBack(&mButton);
|
this->mChildWidgets.pushBack(&mButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
mLogged = false;
|
mLogged = false;
|
||||||
|
|
||||||
const auto xval = this->mArea.z / 2 - 100;
|
const auto xval = this->mArea.z / 2 - 100;
|
||||||
|
|
@ -113,16 +106,15 @@ namespace tp {
|
||||||
mPass.setArea({ xval, 50, 200, 30 });
|
mPass.setArea({ xval, 50, 200, 30 });
|
||||||
mButton.setArea({ xval, 90, 200, 30 });
|
mButton.setArea({ xval, 90, 200, 30 });
|
||||||
|
|
||||||
if (mButton.mIsReleased) {
|
if (mButton.isFired()) {
|
||||||
mButton.mIsReleased = false;
|
|
||||||
mLogged = true;
|
mLogged = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override { canvas.rect(this->mArea, mBGColor); }
|
void eventDraw(Canvas& canvas) override { canvas.rect(this->mArea, mBGColor); }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("LoginWidget");
|
wm.setActiveId("LoginWidget");
|
||||||
mBGColor = wm.getColor("Back", "Base");
|
mBGColor = wm.getColor("Back", "Base");
|
||||||
}
|
}
|
||||||
|
|
@ -148,7 +140,7 @@ namespace tp {
|
||||||
this->mChildWidgets.pushBack(&mSend);
|
this->mChildWidgets.pushBack(&mSend);
|
||||||
}
|
}
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
auto history = this->mArea;
|
auto history = this->mArea;
|
||||||
history.w -= 50;
|
history.w -= 50;
|
||||||
|
|
||||||
|
|
@ -168,16 +160,12 @@ namespace tp {
|
||||||
mSend.setArea(inputSend);
|
mSend.setArea(inputSend);
|
||||||
mMessage.setArea(inputMessage);
|
mMessage.setArea(inputMessage);
|
||||||
|
|
||||||
if (mSend.mIsReleased) {
|
|
||||||
mSend.mIsReleased = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
mHistoryView.setArea(history);
|
mHistoryView.setArea(history);
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override { canvas.rect(this->mArea, mBGColor); }
|
void eventDraw(Canvas& canvas) override { canvas.rect(this->mArea, mBGColor); }
|
||||||
|
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("ActiveChat");
|
wm.setActiveId("ActiveChat");
|
||||||
mBGColor = wm.getColor("Back", "Background");
|
mBGColor = wm.getColor("Back", "Background");
|
||||||
mPadding = wm.getNumber("Padding", "Padding");
|
mPadding = wm.getNumber("Padding", "Padding");
|
||||||
|
|
@ -227,15 +215,15 @@ namespace tp {
|
||||||
this->mChildWidgets.pushBack(&mSplitView);
|
this->mChildWidgets.pushBack(&mSplitView);
|
||||||
}
|
}
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
mSplitView.setArea(this->mArea);
|
mSplitView.setArea(this->mArea);
|
||||||
mSideView.setArea(mSplitView.getSecond());
|
mSideView.setArea(mSplitView.getSecond());
|
||||||
mActive.setArea(mSplitView.getFirst());
|
mActive.setArea(mSplitView.getFirst());
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override { canvas.rect(this->mArea, mBGColor); }
|
void eventDraw(Canvas& canvas) override { canvas.rect(this->mArea, mBGColor); }
|
||||||
|
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("ChattingWidget");
|
wm.setActiveId("ChattingWidget");
|
||||||
mBGColor = wm.getColor("Back", "Background");
|
mBGColor = wm.getColor("Back", "Background");
|
||||||
}
|
}
|
||||||
|
|
@ -257,7 +245,7 @@ namespace tp {
|
||||||
this->mChildWidgets.pushBack(&mChatting);
|
this->mChildWidgets.pushBack(&mChatting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
mLogged = mLogin.mLogged;
|
mLogged = mLogin.mLogged;
|
||||||
|
|
||||||
mLogin.setEnable(!mLogged);
|
mLogin.setEnable(!mLogged);
|
||||||
|
|
@ -267,9 +255,9 @@ namespace tp {
|
||||||
mChatting.setArea(this->mArea);
|
mChatting.setArea(this->mArea);
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override { canvas.rect(this->mArea, mBGColor); }
|
void eventDraw(Canvas& canvas) override { canvas.rect(this->mArea, mBGColor); }
|
||||||
|
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("ChatGui");
|
wm.setActiveId("ChatGui");
|
||||||
mBGColor = wm.getColor("Back", "Background");
|
mBGColor = wm.getColor("Back", "Background");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,8 @@ public:
|
||||||
const auto rec = RectF({ 0, 0 }, mWindow->getSize());
|
const auto rec = RectF({ 0, 0 }, mWindow->getSize());
|
||||||
|
|
||||||
mGui.setArea(rec);
|
mGui.setArea(rec);
|
||||||
mGui.setVisible(true);
|
|
||||||
mGui.updateConfigWrapper(mWidgetManager);
|
mGui.updateConfigWrapper(mWidgetManager);
|
||||||
mGui.procWrapper(*eventHandler);
|
mGui.procWrapper(*eventHandler, rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawFrame(Canvas* canvas) override {
|
void drawFrame(Canvas* canvas) override {
|
||||||
|
|
|
||||||
|
|
@ -18,27 +18,14 @@ namespace tp {
|
||||||
this->mChildWidgets.pushBack(&mLabel);
|
this->mChildWidgets.pushBack(&mLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
bool isFired() { return this->isReleased(); }
|
||||||
mLabel.setArea(this->mArea);
|
|
||||||
|
|
||||||
mIsHover = this->mArea.isInside(events.getPointer());
|
void eventProcess(const Events&) override { mLabel.setArea(this->mArea); }
|
||||||
|
|
||||||
if (events.isPressed(InputID::MOUSE1) && mIsHover) {
|
void eventDraw(Canvas& canvas) override {
|
||||||
mIsPressed = true;
|
if (this->isHolding()) {
|
||||||
}
|
|
||||||
|
|
||||||
if (mIsPressed && mIsHover && events.isReleased(InputID::MOUSE1)) {
|
|
||||||
mIsReleased = true;
|
|
||||||
mIsPressed = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!mIsHover) mIsPressed = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override {
|
|
||||||
if (mIsPressed) {
|
|
||||||
canvas.rect(this->mArea, pressedColor, rounding);
|
canvas.rect(this->mArea, pressedColor, rounding);
|
||||||
} else if (mIsHover) {
|
} else if (this->isFocus()) {
|
||||||
canvas.rect(this->mArea, hoveredColor, rounding);
|
canvas.rect(this->mArea, hoveredColor, rounding);
|
||||||
} else {
|
} else {
|
||||||
canvas.rect(this->mArea, accentColor, rounding);
|
canvas.rect(this->mArea, accentColor, rounding);
|
||||||
|
|
@ -46,29 +33,21 @@ namespace tp {
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("Button");
|
wm.setActiveId("Button");
|
||||||
|
|
||||||
pressedColor = wm.getColor("Pressed", "Action");
|
pressedColor = wm.getColor("Pressed", "Action");
|
||||||
hoveredColor = wm.getColor("Hovered", "Interaction");
|
hoveredColor = wm.getColor("Hovered", "Interaction");
|
||||||
accentColor = wm.getColor("Default", "Accent");
|
accentColor = wm.getColor("Default", "Accent");
|
||||||
rounding = wm.getNumber("Rounding", "Rounding");
|
rounding = wm.getNumber("Rounding", "Rounding");
|
||||||
|
|
||||||
// mPressEvent = wm.getEventState("Activate", { { InputID::MOUSE1, InputState::PRESSED } });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LabelWidget<Events, Canvas> mLabel;
|
LabelWidget<Events, Canvas> mLabel;
|
||||||
|
|
||||||
bool mIsHover = false;
|
|
||||||
bool mIsPressed = false;
|
|
||||||
bool mIsReleased = false;
|
|
||||||
|
|
||||||
RGBA pressedColor;
|
RGBA pressedColor;
|
||||||
RGBA hoveredColor;
|
RGBA hoveredColor;
|
||||||
RGBA accentColor;
|
RGBA accentColor;
|
||||||
halnf rounding = 0;
|
halnf rounding = 0;
|
||||||
|
|
||||||
// InputState mPressEvent;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -8,12 +8,12 @@ namespace tp {
|
||||||
public:
|
public:
|
||||||
LabelWidget() = default;
|
LabelWidget() = default;
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override {
|
void eventDraw(Canvas& canvas) override {
|
||||||
canvas.text(mLabel.c_str(), this->mArea, fontSize, Canvas::CC, padding, fontColor);
|
canvas.text(mLabel.c_str(), this->mArea, fontSize, Canvas::CC, padding, fontColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("Label");
|
wm.setActiveId("Label");
|
||||||
|
|
||||||
fontSize = wm.getNumber("Size", "FontSize");
|
fontSize = wm.getNumber("Size", "FontSize");
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ namespace tp {
|
||||||
ScrollBarWidget() = default;
|
ScrollBarWidget() = default;
|
||||||
|
|
||||||
// takes whole area
|
// takes whole area
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
auto area = getHandle();
|
auto area = getHandle();
|
||||||
mHovered = getHandleHandle().isInside(events.getPointer());
|
mHovered = getHandleHandle().isInside(events.getPointer());
|
||||||
|
|
||||||
|
|
@ -52,7 +52,7 @@ namespace tp {
|
||||||
mPositionFraction = tp::clamp(mPositionFraction, 0.f, 1.f - mSizeFraction);
|
mPositionFraction = tp::clamp(mPositionFraction, 0.f, 1.f - mSizeFraction);
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override {
|
void eventDraw(Canvas& canvas) override {
|
||||||
auto area = getHandle();
|
auto area = getHandle();
|
||||||
|
|
||||||
if (mSizeFraction > 1.f) return;
|
if (mSizeFraction > 1.f) return;
|
||||||
|
|
@ -92,7 +92,7 @@ namespace tp {
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("Scrollbar");
|
wm.setActiveId("Scrollbar");
|
||||||
|
|
||||||
mDefaultColor = wm.getColor("Default", "Base");
|
mDefaultColor = wm.getColor("Default", "Base");
|
||||||
|
|
@ -134,7 +134,7 @@ namespace tp {
|
||||||
~ScrollableWindow() = default;
|
~ScrollableWindow() = default;
|
||||||
|
|
||||||
// takes whole area
|
// takes whole area
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
List<Widget<Events, Canvas>*>& content = mContentWidget.mChildWidgets;
|
List<Widget<Events, Canvas>*>& content = mContentWidget.mChildWidgets;
|
||||||
|
|
||||||
updateContents(content);
|
updateContents(content);
|
||||||
|
|
@ -164,7 +164,7 @@ namespace tp {
|
||||||
void clearContent() { mContentWidget.mChildWidgets.removeAll(); }
|
void clearContent() { mContentWidget.mChildWidgets.removeAll(); }
|
||||||
List<Widget<Events, Canvas>*>& getContent() { return mContentWidget.mChildWidgets; }
|
List<Widget<Events, Canvas>*>& getContent() { return mContentWidget.mChildWidgets; }
|
||||||
|
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("ScrollableWidget");
|
wm.setActiveId("ScrollableWidget");
|
||||||
mPadding = wm.getNumber("Padding", "Padding");
|
mPadding = wm.getNumber("Padding", "Padding");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ namespace tp {
|
||||||
public:
|
public:
|
||||||
SliderWidget() = default;
|
SliderWidget() = default;
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
if (events.isPressed(InputID::MOUSE1) && this->mArea.isInside(events.getPointer())) {
|
if (this->isPressed()) {
|
||||||
mIsSliding = true;
|
mIsSliding = true;
|
||||||
} else if (events.isReleased(InputID::MOUSE1)) {
|
} else if (events.isReleased(InputID::MOUSE1)) {
|
||||||
mIsSliding = false;
|
mIsSliding = false;
|
||||||
|
|
@ -23,7 +23,7 @@ namespace tp {
|
||||||
mFactor = tp::clamp(mFactor, 0.f, 1.f);
|
mFactor = tp::clamp(mFactor, 0.f, 1.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override {
|
void eventDraw(Canvas& canvas) override {
|
||||||
canvas.rect(this->mArea, defaultColor, rounding);
|
canvas.rect(this->mArea, defaultColor, rounding);
|
||||||
canvas.rect(getHandle(), handleColor, rounding);
|
canvas.rect(getHandle(), handleColor, rounding);
|
||||||
}
|
}
|
||||||
|
|
@ -34,7 +34,7 @@ namespace tp {
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("Slider");
|
wm.setActiveId("Slider");
|
||||||
defaultColor = wm.getColor("Default", "Base");
|
defaultColor = wm.getColor("Default", "Base");
|
||||||
handleColor = wm.getColor("Handle", "Accent");
|
handleColor = wm.getColor("Handle", "Accent");
|
||||||
|
|
@ -63,7 +63,7 @@ namespace tp {
|
||||||
this->mChildWidgets.pushBack(&mLabel);
|
this->mChildWidgets.pushBack(&mLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
const auto widthFirst = this->mArea.z * mFactor;
|
const auto widthFirst = this->mArea.z * mFactor;
|
||||||
const auto widthSecond = this->mArea.z * (1.f - mFactor);
|
const auto widthSecond = this->mArea.z * (1.f - mFactor);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ namespace tp {
|
||||||
SplitView() = default;
|
SplitView() = default;
|
||||||
|
|
||||||
// takes whole area
|
// takes whole area
|
||||||
void procCallback(const Events& events) override {
|
void eventProcess(const Events& events) override {
|
||||||
mIsHover = getHandle().isInside(events.getPointer());
|
mIsHover = getHandle().isInside(events.getPointer());
|
||||||
|
|
||||||
if (events.isPressed(InputID::MOUSE1) && mIsHover) {
|
if (events.isPressed(InputID::MOUSE1) && mIsHover) {
|
||||||
|
|
@ -31,7 +31,7 @@ namespace tp {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCallback(Canvas& canvas) override {
|
void eventDraw(Canvas& canvas) override {
|
||||||
if (mResizeInProcess) canvas.rect(getHandle(), mResizingColor);
|
if (mResizeInProcess) canvas.rect(getHandle(), mResizingColor);
|
||||||
else if (mIsHover) canvas.rect(getHandle(), mHoveredColor);
|
else if (mIsHover) canvas.rect(getHandle(), mHoveredColor);
|
||||||
else canvas.rect(getHandle(), mHandleColor);
|
else canvas.rect(getHandle(), mHandleColor);
|
||||||
|
|
@ -53,7 +53,7 @@ namespace tp {
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("SplitView");
|
wm.setActiveId("SplitView");
|
||||||
|
|
||||||
mHandleColor = wm.getColor("Handle", "Accent");
|
mHandleColor = wm.getColor("Handle", "Accent");
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ namespace tp {
|
||||||
public:
|
public:
|
||||||
TextInputWidget() = default;
|
TextInputWidget() = default;
|
||||||
|
|
||||||
void drawCallback(Canvas&) override {
|
void eventDraw(Canvas&) override {
|
||||||
nChanged = false;
|
nChanged = false;
|
||||||
|
|
||||||
const auto col = mAccentColor;
|
const auto col = mAccentColor;
|
||||||
|
|
@ -51,7 +51,7 @@ namespace tp {
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void updateConfigCallback(WidgetManager& wm) override {
|
void eventUpdateConfiguration(WidgetManager& wm) override {
|
||||||
wm.setActiveId("TextInput");
|
wm.setActiveId("TextInput");
|
||||||
|
|
||||||
mAccentColor = wm.getColor("Accent", "Accent");
|
mAccentColor = wm.getColor("Accent", "Accent");
|
||||||
|
|
|
||||||
|
|
@ -13,58 +13,137 @@ namespace tp {
|
||||||
|
|
||||||
virtual ~Widget() = default;
|
virtual ~Widget() = default;
|
||||||
|
|
||||||
virtual void procWrapper(const Events& events) {
|
virtual void procWrapper(const Events& events, const RectF& parentArea) {
|
||||||
if (!mEnable) return;
|
if (!mEnable) return;
|
||||||
|
|
||||||
|
checkVisibility(events, parentArea);
|
||||||
|
|
||||||
if (!mVisible) return;
|
if (!mVisible) return;
|
||||||
|
|
||||||
procCallback(events);
|
checkFocus(events);
|
||||||
|
|
||||||
|
checkClicked(events);
|
||||||
|
|
||||||
|
eventProcess(events);
|
||||||
|
|
||||||
for (auto child : mChildWidgets) {
|
for (auto child : mChildWidgets) {
|
||||||
const bool isChildVisible = getArea().isOverlap(child->getArea());
|
child->procWrapper(events, getArea());
|
||||||
child->setVisible(isChildVisible);
|
|
||||||
child->procWrapper(events);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void drawWrapper(Canvas& canvas) {
|
virtual void drawWrapper(Canvas& canvas) {
|
||||||
if (!mEnable) return;
|
if (!mEnable || !mVisible) return;
|
||||||
if (!mVisible) return;
|
|
||||||
|
|
||||||
drawCallback(canvas);
|
eventDraw(canvas);
|
||||||
|
|
||||||
|
// draw child widgets
|
||||||
canvas.pushClamp(this->mArea);
|
canvas.pushClamp(this->mArea);
|
||||||
|
|
||||||
for (auto child : mChildWidgets) {
|
for (auto child : mChildWidgets) {
|
||||||
child->drawWrapper(canvas);
|
child->drawWrapper(canvas);
|
||||||
}
|
}
|
||||||
|
|
||||||
canvas.popClamp();
|
canvas.popClamp();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void updateConfigWrapper(WidgetManager& wm) {
|
virtual void updateConfigWrapper(WidgetManager& wm) {
|
||||||
wm.setActiveId("Global");
|
wm.setActiveId("Global");
|
||||||
|
|
||||||
updateConfigCallback(wm);
|
eventUpdateConfiguration(wm);
|
||||||
|
|
||||||
for (auto child : mChildWidgets) {
|
for (auto child : mChildWidgets) {
|
||||||
child->updateConfigWrapper(wm);
|
child->updateConfigWrapper(wm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void procCallback(const Events& events) {}
|
virtual void eventProcess(const Events& events) {}
|
||||||
virtual void drawCallback(Canvas& canvas) {}
|
virtual void eventDraw(Canvas& canvas) {}
|
||||||
virtual void updateConfigCallback(WidgetManager& wm) {}
|
virtual void eventUpdateConfiguration(WidgetManager& wm) {}
|
||||||
|
|
||||||
|
virtual void eventVisible(const Events& events) {}
|
||||||
|
virtual void eventNotVisible(const Events& events) {}
|
||||||
|
|
||||||
|
virtual void eventFocusEnter(const Events& events) {}
|
||||||
|
virtual void eventFocusLeave(const Events& events) {}
|
||||||
|
|
||||||
|
virtual void eventPressed(const Events& events) {}
|
||||||
|
virtual void eventReleased(const Events& events) {}
|
||||||
|
|
||||||
|
public:
|
||||||
|
void checkVisibility(const Events& events, const RectF& parentArea) {
|
||||||
|
const bool currentVisibility = parentArea.isOverlap(getArea());
|
||||||
|
|
||||||
|
if (currentVisibility != mVisible) {
|
||||||
|
if (currentVisibility) eventVisible(events);
|
||||||
|
else eventNotVisible(events);
|
||||||
|
}
|
||||||
|
|
||||||
|
mVisible = currentVisibility;
|
||||||
|
|
||||||
|
if (!mVisible) {
|
||||||
|
mHolding = false;
|
||||||
|
mPressed = false;
|
||||||
|
mReleased = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void checkFocus(const Events& events) {
|
||||||
|
const bool currentFocus = getArea().isInside(events.getPointer());
|
||||||
|
|
||||||
|
if (currentFocus != mInFocus) {
|
||||||
|
if (currentFocus) eventFocusEnter(events);
|
||||||
|
else eventFocusLeave(events);
|
||||||
|
}
|
||||||
|
|
||||||
|
mInFocus = currentFocus;
|
||||||
|
|
||||||
|
if (!mInFocus) {
|
||||||
|
mHolding = false;
|
||||||
|
mPressed = false;
|
||||||
|
mReleased = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void checkClicked(const Events& events) {
|
||||||
|
mPressed = false;
|
||||||
|
mReleased = false;
|
||||||
|
|
||||||
|
if (!mInFocus) return;
|
||||||
|
|
||||||
|
if (mHolding) {
|
||||||
|
if (events.isReleased(InputID::MOUSE1)) {
|
||||||
|
eventReleased(events);
|
||||||
|
mReleased = true;
|
||||||
|
mHolding = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (events.isPressed(InputID::MOUSE1)) {
|
||||||
|
eventPressed(events);
|
||||||
|
mHolding = true;
|
||||||
|
mPressed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void setEnable(bool enable) { mEnable = enable; }
|
void setEnable(bool enable) { mEnable = enable; }
|
||||||
void setVisible(bool visible) { mVisible = visible; }
|
void setVisible(bool visible) { mVisible = visible; }
|
||||||
const RectF& getArea() const { return mArea; }
|
|
||||||
void setArea(const RectF& area) { mArea = area; }
|
void setArea(const RectF& area) { mArea = area; }
|
||||||
|
|
||||||
|
const RectF& getArea() const { return mArea; }
|
||||||
|
bool isFocus() const { return mInFocus; }
|
||||||
|
bool isPressed() const { return mPressed; }
|
||||||
|
bool isReleased() const { return mReleased; }
|
||||||
|
bool isHolding() const { return mHolding; }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RectF mArea;
|
RectF mArea;
|
||||||
List<Widget<Events, Canvas>*> mChildWidgets;
|
List<Widget<Events, Canvas>*> mChildWidgets;
|
||||||
|
|
||||||
bool mVisible = false;
|
bool mVisible = false;
|
||||||
bool mEnable = true;
|
bool mEnable = true;
|
||||||
|
bool mInFocus = false;
|
||||||
|
|
||||||
|
bool mHolding = false;
|
||||||
|
bool mPressed = false;
|
||||||
|
bool mReleased = false;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue