Remove mouse drag resizing functionality

This commit is contained in:
sylvass
2021-12-14 11:31:33 -05:00
parent efddc8bc46
commit e95287399c
6 changed files with 3 additions and 104 deletions

View File

@@ -62,7 +62,6 @@ public:
bool isTargetSelected();
void fineTuneTarget(const glm::vec2& start, const glm::vec2& translation);
void translateSelected(const glm::vec2& start, const glm::vec2& translation);
void resizeBrowser(const glm::vec2& start, const glm::vec2& translation);
// Browser
void sendIdToBrowser();
@@ -75,7 +74,6 @@ public:
// Boolean functions
bool hasFinishedFading(float goalState) const;
bool isOnResizeArea(glm::vec2 mouseScreenSpaceCoords);
bool isEnabled() const;
bool isLocked() const;

View File

@@ -46,11 +46,6 @@ namespace openspace {
void setCallbackBorderColor(std::function<void(const glm::ivec3&)> function);
void setCallbackEnabled(std::function<void(bool)> function);
// Interaction. Resize
void saveResizeStartSize();
bool isOnResizeArea(glm::vec2 screenSpaceCoord);
void resize(const glm::vec2& start, const glm::vec2& mouseDrag);
glm::dvec2 fineTuneVector(glm::dvec2 drag);
void setIdInBrowser();
@@ -71,13 +66,6 @@ namespace openspace {
// Animation of fieldOfView
float _endVfov{ 0.f };
// Resizing
float _originalScale;
float _resizeAreaPercentage{ 0.1f };
glm::vec2 _originalDimensions;
glm::vec2 _originalScreenSpaceSize;
glm::ivec2 _resizeDirection;
// Time variables
// For capping the calls onchange properties from scrolling
constexpr static const std::chrono::milliseconds _timeUpdateInterval{ 10 };

View File

@@ -285,11 +285,7 @@ SkyBrowserModule::SkyBrowserModule()
}
else if (_interactionMode != MouseInteraction::Hover &&
action == MouseAction::Release) {
// Update browser size if it has been resized
if (_interactionMode == MouseInteraction::Resize) {
_mouseOnPair->updateBrowserSize();
}
_interactionMode = MouseInteraction::Hover;
return true;
}
@@ -315,10 +311,6 @@ SkyBrowserModule::SkyBrowserModule()
setSelectedObject();
break;
case MouseInteraction::Resize:
_mouseOnPair->resizeBrowser(_startDragPosition, translation);
break;
case MouseInteraction::Drag:
_mouseOnPair->translateSelected(_startDragPosition, translation);
break;
@@ -625,19 +617,8 @@ void SkyBrowserModule::handleMouseClick(const MouseButton& button)
_startMousePosition = _mousePosition;
_startDragPosition = _mouseOnPair->selectedScreenSpacePosition();
// If current object is browser, check for resizing
bool shouldResize = _mouseOnPair->isBrowserSelected() &&
_mouseOnPair->isOnResizeArea(_mousePosition);
if (shouldResize) {
_mouseOnPair->getBrowser()->saveResizeStartSize();
_interactionMode = MouseInteraction::Resize;
return;
}
else {
// If it's not resize mode, it's drag mode
_interactionMode = MouseInteraction::Drag;
}
// If it's not resize mode, it's drag mode
_interactionMode = MouseInteraction::Drag;
// If target is clicked, it should unlock
if (_mouseOnPair->isTargetSelected()) {

View File

@@ -48,7 +48,6 @@ enum class Transparency {
enum class MouseInteraction {
Hover,
Resize,
Drag,
FineTune,
};

View File

@@ -172,11 +172,6 @@ namespace openspace {
_selected->translate(translation, start);
}
void Pair::resizeBrowser(const glm::vec2& start, const glm::vec2& translation)
{
_browser->resize(start, translation);
}
void Pair::setEnabled(bool enable)
{
_browser->setEnabled(enable);
@@ -323,11 +318,6 @@ namespace openspace {
return isTargetFadeFinished(goalState) && isBrowserFadeFinished(goalState);
}
bool Pair::isOnResizeArea(glm::vec2 mouseScreenSpaceCoords)
{
return _browser->isOnResizeArea(mouseScreenSpaceCoords);
}
ScreenSpaceSkyTarget* Pair::getTarget() {
return _target;
}

View File

@@ -244,57 +244,6 @@ namespace openspace {
_texture->bind();
}
// Mouse interaction with the browser. Returns 1 or -1 at the coordinate in
// image if the mouse is on a side of the browser
// __1__
// y| -1 |_____|1
// |__x -1
bool ScreenSpaceSkyBrowser::isOnResizeArea(glm::vec2 coord) {
glm::ivec2 resizePosition = glm::ivec2{ 0 };
// Make sure coordinate is on browser
if (!intersection(coord)) return false;
// TO DO: turn this into a vector and use prettier vector arithmetic
float resizeAreaY = screenSpaceDimensions().y * _resizeAreaPercentage;
float resizeAreaX = screenSpaceDimensions().x * _resizeAreaPercentage;
const bool isOnTop = coord.y > upperRightCornerScreenSpace().y - resizeAreaY;
const bool isOnBottom = coord.y < lowerLeftCornerScreenSpace().y + resizeAreaY;
const bool isOnRight = coord.x > upperRightCornerScreenSpace().x - resizeAreaX;
const bool isOnLeft = coord.x < lowerLeftCornerScreenSpace().x + resizeAreaX;
resizePosition.x = isOnRight ? 1 : isOnLeft ? -1 : 0;
resizePosition.y = isOnTop ? 1 : isOnBottom ? -1 : 0;
_resizeDirection = resizePosition;
return isOnRight || isOnLeft || isOnTop || isOnBottom;
}
void ScreenSpaceSkyBrowser::resize(const glm::vec2& start, const glm::vec2& mouseDrag)
{
glm::vec2 scaling = mouseDrag * glm::vec2(_resizeDirection);
glm::vec2 newSizeRelToOld = (_originalScreenSpaceSize + (scaling)) /
_originalScreenSpaceSize;
_scale = _originalScale * abs(newSizeRelToOld.y);
// Resize the dimensions of the texture on the x axis
glm::vec2 newDimensions = abs(newSizeRelToOld) * _originalDimensions;
// Scale the browser
// Scale on the y axis, this is to ensure that _scale = 1 is
// equal to the height of the window
_texture->setDimensions(glm::ivec3(newDimensions, 1));
_objectSize = _texture->dimensions();
// For dragging functionality, translate so it looks like the
// browser isn't moving. Make sure the browser doesn't move in
// directions it's not supposed to
glm::vec2 translation = 0.5f * mouseDrag * abs(
glm::vec2(_resizeDirection)
);
translate(translation, start);
}
glm::mat4 ScreenSpaceSkyBrowser::scaleMatrix() {
// To ensure the plane has the right ratio
// The _scale tells us how much of the windows height the
@@ -308,12 +257,6 @@ namespace openspace {
return scale;
}
void ScreenSpaceSkyBrowser::saveResizeStartSize() {
_originalScreenSpaceSize = screenSpaceDimensions();
_originalDimensions = _browserPixeldimensions;
_originalScale = _scale;
}
void ScreenSpaceSkyBrowser::setCallbackEquatorialAim(
std::function<void(const glm::dvec2&)> function)
{