Browse Source

Updated the old jucer code to work without the now-defunct MagnifierComponent.

tags/2021-05-28
Julian Storer 15 years ago
parent
commit
5e67b6c7c5
4 changed files with 45 additions and 15 deletions
  1. +37
    -6
      extras/the jucer/src/ui/jucer_EditingPanelBase.cpp
  2. +2
    -0
      extras/the jucer/src/ui/jucer_EditingPanelBase.h
  3. +4
    -7
      extras/the jucer/src/ui/jucer_JucerDocumentHolder.cpp
  4. +2
    -2
      extras/the jucer/src/ui/jucer_JucerDocumentHolder.h

+ 37
- 6
extras/the jucer/src/ui/jucer_EditingPanelBase.cpp View File

@@ -27,6 +27,37 @@
#include "jucer_EditingPanelBase.h"
#include "jucer_JucerDocumentHolder.h"
//==============================================================================
class EditingPanelBase::MagnifierComponent : public Component
{
public:
MagnifierComponent (Component* content_)
: scaleFactor (1.0), content (content_)
{
addAndMakeVisible (content);
childBoundsChanged (content);
}
void childBoundsChanged (Component* child)
{
const Rectangle<int> childArea (getLocalArea (child, child->getLocalBounds()));
setSize (childArea.getWidth(), childArea.getHeight());
}
double getScaleFactor() const { return scaleFactor; }
void setScaleFactor (double newScale)
{
scaleFactor = newScale;
content->setTransform (AffineTransform::scale ((float) scaleFactor,
(float) scaleFactor));
}
private:
double scaleFactor;
ScopedPointer<Component> content;
};
//==============================================================================
class ZoomingViewport : public Viewport
{
@@ -137,7 +168,7 @@ EditingPanelBase::EditingPanelBase (JucerDocument& document_,
addAndMakeVisible (viewport = new ZoomingViewport (this));
addAndMakeVisible (propsPanel);
viewport->setViewedComponent (magnifier = new MagnifierComponent (editor, true));
viewport->setViewedComponent (magnifier = new MagnifierComponent (editor));
}
EditingPanelBase::~EditingPanelBase()
@@ -175,7 +206,7 @@ void EditingPanelBase::visibilityChanged()
JucerDocumentHolder* const cdh = dynamic_cast <JucerDocumentHolder*> (getParentComponent()->getParentComponent());
if (cdh != 0)
cdh->setViewportToLastPos (viewport);
cdh->setViewportToLastPos (viewport, *this);
resized();
}
@@ -187,7 +218,7 @@ void EditingPanelBase::visibilityChanged()
JucerDocumentHolder* const cdh = dynamic_cast <JucerDocumentHolder*> (getParentComponent()->getParentComponent());
if (cdh != 0)
cdh->storeLastViewportPos (viewport);
cdh->storeLastViewportPos (viewport, *this);
}
}
@@ -208,12 +239,12 @@ void EditingPanelBase::setZoom (double newScale)
void EditingPanelBase::setZoom (double newScale, int anchorX, int anchorY)
{
Point<int> anchor (viewport->relativePositionToOtherComponent (editor, Point<int> (anchorX, anchorY)));
Point<int> anchor (editor->getLocalPoint (viewport, Point<int> (anchorX, anchorY)));
magnifier->setScaleFactor (newScale);
resized();
anchor = editor->relativePositionToOtherComponent (viewport, anchor);
anchor = viewport->getLocalPoint (editor, anchor);
viewport->setViewPosition (jlimit (0, jmax (0, viewport->getViewedComponent()->getWidth() - viewport->getViewWidth()),
viewport->getViewPositionX() + anchor.getX() - anchorX),
@@ -223,7 +254,7 @@ void EditingPanelBase::setZoom (double newScale, int anchorX, int anchorY)
void EditingPanelBase::xyToTargetXY (int& x, int& y) const
{
Point<int> pos (relativePositionToOtherComponent (editor, Point<int> (x, y)));
Point<int> pos (editor->getLocalPoint (this, Point<int> (x, y)));
x = pos.getX();
y = pos.getY();
}


+ 2
- 0
extras/the jucer/src/ui/jucer_EditingPanelBase.h View File

@@ -64,6 +64,8 @@ public:
void dragKeyHeldDown (bool isKeyDown);
class MagnifierComponent;
//==============================================================================
juce_UseDebuggingNewOperator


+ 4
- 7
extras/the jucer/src/ui/jucer_JucerDocumentHolder.cpp View File

@@ -576,21 +576,18 @@ void JucerDocumentHolder::showGraphics (PaintRoutine* routine)
}
//==============================================================================
void JucerDocumentHolder::setViewportToLastPos (Viewport* vp)
void JucerDocumentHolder::setViewportToLastPos (Viewport* vp, EditingPanelBase& editor)
{
vp->setViewPosition (lastViewportX, lastViewportY);
MagnifierComponent* magnifier = dynamic_cast <MagnifierComponent*> (vp->getViewedComponent());
magnifier->setScaleFactor (currentZoomLevel);
editor.setZoom (currentZoomLevel);
}
void JucerDocumentHolder::storeLastViewportPos (Viewport* vp)
void JucerDocumentHolder::storeLastViewportPos (Viewport* vp, EditingPanelBase& editor)
{
lastViewportX = vp->getViewPositionX();
lastViewportY = vp->getViewPositionY();
MagnifierComponent* magnifier = dynamic_cast <MagnifierComponent*> (vp->getViewedComponent());
currentZoomLevel = magnifier->getScaleFactor();
currentZoomLevel = editor.getZoom();
}
void JucerDocumentHolder::setZoom (double scale)


+ 2
- 2
extras/the jucer/src/ui/jucer_JucerDocumentHolder.h View File

@@ -54,8 +54,8 @@ public:
void showLayout();
void showGraphics (PaintRoutine* routine);
void setViewportToLastPos (Viewport* vp);
void storeLastViewportPos (Viewport* vp);
void setViewportToLastPos (Viewport* vp, EditingPanelBase& editor);
void storeLastViewportPos (Viewport* vp, EditingPanelBase& editor);
const Image createComponentLayerSnapshot() const;


Loading…
Cancel
Save