Skip to content
Snippets Groups Projects
Commit ee35b143 authored by aburn's avatar aburn
Browse files

Added scrolling via miniature

parent 0bdc5ef4
Branches
No related merge requests found
...@@ -47,7 +47,9 @@ public class ImageView extends EditorView ...@@ -47,7 +47,9 @@ public class ImageView extends EditorView
fit(); fit();
} }
}); });
} }
@Override protected NavViewInputListener createInputListener() {return new ImageViewInputListener(this);}
protected void constrain() protected void constrain()
{ {
...@@ -91,7 +93,8 @@ public class ImageView extends EditorView ...@@ -91,7 +93,8 @@ public class ImageView extends EditorView
float miniAlpha = 0; float miniAlpha = 0;
protected AffineTransform miniTransform = new AffineTransform(); protected AffineTransform miniTransform = new AffineTransform();
Point2D br = new Point2D.Double(), brt = new Point2D.Double(); Point2D br = new Point2D.Double(), brt = new Point2D.Double();
float miniw = 0, minih = 0;
protected void drawMini(Graphics2D g, double pixelSize) protected void drawMini(Graphics2D g, double pixelSize)
{ {
int iw = getImageWidth(), ih = getImageHeight(); int iw = getImageWidth(), ih = getImageHeight();
...@@ -103,22 +106,22 @@ public class ImageView extends EditorView ...@@ -103,22 +106,22 @@ public class ImageView extends EditorView
float talpha = (r-l)*(d-u) < 1 ? 1 : 0; float talpha = (r-l)*(d-u) < 1 ? 1 : 0;
if (talpha != miniAlpha) if (talpha != miniAlpha)
miniAlpha = Math.max(talpha < miniAlpha ? talpha : 0, Math.min(talpha > miniAlpha ? talpha : 1, miniAlpha+(talpha < miniAlpha ? -.1f : .1f))); miniAlpha = Math.max(talpha < miniAlpha ? talpha : 0, Math.min(talpha > miniAlpha ? talpha : 1, miniAlpha+(talpha < miniAlpha ? -.1f : .1f)));
miniw = minih = 0;
if (miniAlpha > 0) if (miniAlpha > 0)
{ {
float miniSize = miniSizeFactor*Math.min(getWidth(), getHeight()); float miniSize = miniSizeFactor*Math.min(getWidth(), getHeight());
float mw = iw < ih ? miniSize : iw*miniSize/ih; miniw = iw < ih ? miniSize : iw*miniSize/ih;
float mh = iw < ih ? ih*miniSize/iw : miniSize; minih = iw < ih ? ih*miniSize/iw : miniSize;
miniTransform.setTransform(defaultTransform); miniTransform.setTransform(defaultTransform);
if (rot != ViewRotation.None) if (rot != ViewRotation.None)
{ {
miniTransform.quadrantRotate(-rot.ordinal(), 0, 0); miniTransform.quadrantRotate(-rot.ordinal(), 0, 0);
br.setLocation(mw, mh); br.setLocation(miniw, minih);
miniTransform.transform(br, brt); miniTransform.transform(br, brt);
miniTransform.setToTranslation(brt.getX() < 0 ? -brt.getX() : 0, brt.getY() < 0 ? -brt.getY() : 0); miniTransform.setToTranslation(brt.getX() < 0 ? -brt.getX() : 0, brt.getY() < 0 ? -brt.getY() : 0);
miniTransform.quadrantRotate(-rot.ordinal(), 0, 0); miniTransform.quadrantRotate(-rot.ordinal(), 0, 0);
miniTransform.transform(br, brt);
} }
g.setTransform(miniTransform); g.setTransform(miniTransform);
Stroke oldStroke = g.getStroke(); Stroke oldStroke = g.getStroke();
...@@ -126,12 +129,12 @@ public class ImageView extends EditorView ...@@ -126,12 +129,12 @@ public class ImageView extends EditorView
Composite oldComposite = g.getComposite(); Composite oldComposite = g.getComposite();
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, miniAlpha)); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, miniAlpha));
renderMini(g, pixelSize, (int)mw, (int)mh); renderMini(g, pixelSize, (int)miniw, (int)minih);
g.setColor(Color.white); g.setColor(Color.white);
g.drawRect(0, 0, (int)mw, (int)mh); g.drawRect(0, 0, (int)miniw, (int)minih);
g.setColor(Color.blue); g.setColor(Color.blue);
g.drawRect((int)(l*mw), (int)(u*mh), (int)((r-l)*mw), (int)((d-u)*mh)); g.drawRect((int)(l*miniw), (int)(u*minih), (int)((r-l)*miniw), (int)((d-u)*minih));
g.setComposite(oldComposite); g.setComposite(oldComposite);
g.setStroke(oldStroke); g.setStroke(oldStroke);
......
package org.interreg.docexplore.gui.image;
import java.awt.event.MouseEvent;
import java.awt.geom.Point2D;
public class ImageViewInputListener extends EditorViewInputListener
{
ImageView view;
public ImageViewInputListener(ImageView view)
{
super(view);
this.view = view;
}
Point2D f = new Point2D.Double(), p = new Point2D.Double();
@Override public void mousePressed(MouseEvent e)
{
if (view.miniw*view.minih > 0)
try
{
f.setLocation(0, 0);
view.miniTransform.inverseTransform(e.getPoint(), p);
double x = p.getX()/view.miniw, y = p.getY()/view.minih;
if (x >= 0 && y >= 0 && x <= 1 && y <= 1)
{
view.setView(x*view.getImageWidth(), y*view.getImageHeight());
return;
}
}
catch (Exception ex) {}
super.mousePressed(e);
}
}
...@@ -103,6 +103,7 @@ public class NavView extends JPanel ...@@ -103,6 +103,7 @@ public class NavView extends JPanel
repaint(); repaint();
} }
public void setView(NavView view) {setView(view.x0, view.y0, view.scale);} public void setView(NavView view) {setView(view.x0, view.y0, view.scale);}
public void setView(double x0, double y0) {setView(x0, y0, scale, rot);}
public void setView(double x0, double y0, double scale) {setView(x0, y0, scale, rot);} public void setView(double x0, double y0, double scale) {setView(x0, y0, scale, rot);}
public void setView(double x0, double y0, double scale, ViewRotation rot) public void setView(double x0, double y0, double scale, ViewRotation rot)
{ {
......
...@@ -46,7 +46,7 @@ public class NavViewInputListener implements MouseListener, MouseMotionListener, ...@@ -46,7 +46,7 @@ public class NavViewInputListener implements MouseListener, MouseMotionListener,
boolean panning = false; boolean panning = false;
int panDownX = 0, panDownY = 0, panCurX = 0, panCurY = 0; int panDownX = 0, panDownY = 0, panCurX = 0, panCurY = 0;
@Override public void mousePressed(MouseEvent e) @Override public void mousePressed(MouseEvent e)
{System.out.println(view.toViewX(e.getX(), e.getY())+","+view.toViewY(e.getX(), e.getY())); {
if ((e.getModifiers() & panningButton) != 0) if ((e.getModifiers() & panningButton) != 0)
{ {
panning = true; panning = true;
......
...@@ -219,7 +219,8 @@ public class PosterPageEditor extends PageEditor ...@@ -219,7 +219,8 @@ public class PosterPageEditor extends PageEditor
} }
else super.drawImage(g, pixelSize); else super.drawImage(g, pixelSize);
} }
AffineTransform miniOverlayTransform = new AffineTransform();
@Override protected void renderMini(Graphics2D g, double pixelSize, int mw, int mh) @Override protected void renderMini(Graphics2D g, double pixelSize, int mw, int mh)
{ {
if (!isPoster) if (!isPoster)
...@@ -238,9 +239,9 @@ public class PosterPageEditor extends PageEditor ...@@ -238,9 +239,9 @@ public class PosterPageEditor extends PageEditor
Stroke oldStroke = g.getStroke(); Stroke oldStroke = g.getStroke();
g.setStroke(new BasicStroke(getImageWidth()*2f/mw)); g.setStroke(new BasicStroke(getImageWidth()*2f/mw));
AffineTransform old = g.getTransform(); AffineTransform old = g.getTransform();
AffineTransform scaled = (AffineTransform)old.clone(); miniOverlayTransform.setTransform(old);
scaled.scale(mw*1./getImageWidth(), mh*1./getImageHeight()); miniOverlayTransform.scale(mw*1./getImageWidth(), mh*1./getImageHeight());
g.setTransform(scaled); g.setTransform(miniOverlayTransform);
drawOverlay(g, pixelSize); drawOverlay(g, pixelSize);
g.setTransform(old); g.setTransform(old);
g.setStroke(oldStroke); g.setStroke(oldStroke);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment