Browse Source

Change Widget::getRelativeOffset/Zoom() argument to `ancestor`.

tags/v2.0.0
Andrew Belt 3 years ago
parent
commit
8a31123eac
4 changed files with 16 additions and 16 deletions
  1. +4
    -4
      include/widget/Widget.hpp
  2. +2
    -2
      include/widget/ZoomWidget.hpp
  3. +6
    -6
      src/widget/Widget.cpp
  4. +4
    -4
      src/widget/ZoomWidget.cpp

+ 4
- 4
include/widget/Widget.hpp View File

@@ -57,18 +57,18 @@ struct Widget : WeakBase {
*/ */
virtual math::Rect getChildrenBoundingBox(); virtual math::Rect getChildrenBoundingBox();
virtual math::Rect getVisibleChildrenBoundingBox(); virtual math::Rect getVisibleChildrenBoundingBox();
/** Returns `v` (given in local coordinates) transformed into the coordinate system of `relative`.
/** Returns `v` (given in local coordinates) transformed into the coordinate system of `ancestor`.
*/ */
virtual math::Vec getRelativeOffset(math::Vec v, Widget* relative);
virtual math::Vec getRelativeOffset(math::Vec v, Widget* ancestor);
/** Returns `v` transformed into world/root/global/absolute coordinates. /** Returns `v` transformed into world/root/global/absolute coordinates.
*/ */
math::Vec getAbsoluteOffset(math::Vec v) { math::Vec getAbsoluteOffset(math::Vec v) {
return getRelativeOffset(v, NULL); return getRelativeOffset(v, NULL);
} }
/** Returns the zoom level in the coordinate system of `relative`.
/** Returns the zoom level in the coordinate system of `ancestor`.
Only `ZoomWidget` should override this to return value other than 1. Only `ZoomWidget` should override this to return value other than 1.
*/ */
virtual float getRelativeZoom(Widget* relative);
virtual float getRelativeZoom(Widget* ancestor);
float getAbsoluteZoom() { float getAbsoluteZoom() {
return getRelativeZoom(NULL); return getRelativeZoom(NULL);
} }


+ 2
- 2
include/widget/ZoomWidget.hpp View File

@@ -10,8 +10,8 @@ namespace widget {
struct ZoomWidget : Widget { struct ZoomWidget : Widget {
float zoom = 1.f; float zoom = 1.f;


math::Vec getRelativeOffset(math::Vec v, Widget* relative) override;
float getRelativeZoom(Widget* relative) override;
math::Vec getRelativeOffset(math::Vec v, Widget* ancestor) override;
float getRelativeZoom(Widget* ancestor) override;
math::Rect getViewport(math::Rect r) override; math::Rect getViewport(math::Rect r) override;
void setZoom(float zoom); void setZoom(float zoom);
float getZoom() { float getZoom() {


+ 6
- 6
src/widget/Widget.cpp View File

@@ -112,23 +112,23 @@ math::Rect Widget::getVisibleChildrenBoundingBox() {
} }




math::Vec Widget::getRelativeOffset(math::Vec v, Widget* relative) {
if (this == relative)
math::Vec Widget::getRelativeOffset(math::Vec v, Widget* ancestor) {
if (this == ancestor)
return v; return v;
// Translate offset // Translate offset
v = v.plus(box.pos); v = v.plus(box.pos);
if (!parent) if (!parent)
return v; return v;
return parent->getRelativeOffset(v, relative);
return parent->getRelativeOffset(v, ancestor);
} }




float Widget::getRelativeZoom(Widget* relative) {
if (this == relative)
float Widget::getRelativeZoom(Widget* ancestor) {
if (this == ancestor)
return 1.f; return 1.f;
if (!parent) if (!parent)
return 1.f; return 1.f;
return parent->getRelativeZoom(relative);
return parent->getRelativeZoom(ancestor);
} }






+ 4
- 4
src/widget/ZoomWidget.cpp View File

@@ -5,15 +5,15 @@ namespace rack {
namespace widget { namespace widget {




math::Vec ZoomWidget::getRelativeOffset(math::Vec v, Widget* relative) {
math::Vec ZoomWidget::getRelativeOffset(math::Vec v, Widget* ancestor) {
// Transform `v` (which is in child coordinates) to local coordinates. // Transform `v` (which is in child coordinates) to local coordinates.
v = v.mult(zoom); v = v.mult(zoom);
return Widget::getRelativeOffset(v, relative);
return Widget::getRelativeOffset(v, ancestor);
} }




float ZoomWidget::getRelativeZoom(Widget* relative) {
return zoom * Widget::getRelativeZoom(relative);
float ZoomWidget::getRelativeZoom(Widget* ancestor) {
return zoom * Widget::getRelativeZoom(ancestor);
} }






Loading…
Cancel
Save