mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-15 15:52:35 +00:00
Registration point enhancements
This commit is contained in:
@@ -24,5 +24,5 @@ import java.awt.geom.Rectangle2D;
|
||||
* @author JPEXS
|
||||
*/
|
||||
public interface BoundsChangeListener {
|
||||
public void boundsChanged(Rectangle2D newBounds, Point2D registraionPoint);
|
||||
public void boundsChanged(Rectangle2D newBounds, Point2D registrationPoint, RegistrationPointPosition registrationPointPosition);
|
||||
}
|
||||
|
||||
@@ -245,6 +245,8 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
|
||||
private boolean mutable = false;
|
||||
|
||||
private boolean alwaysDisplay = false;
|
||||
|
||||
private RegistrationPointPosition registrationPointPosition = RegistrationPointPosition.CENTER;
|
||||
|
||||
private static Cursor loadCursor(String name, int x, int y) throws IOException {
|
||||
Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||
@@ -265,9 +267,9 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
|
||||
boundsChangeListeners.remove(listener);
|
||||
}
|
||||
|
||||
private void fireBoundsChange(Rectangle2D bounds, Point2D registrationPoint) {
|
||||
private void fireBoundsChange(Rectangle2D bounds, Point2D registrationPoint, RegistrationPointPosition registrationPointPosition) {
|
||||
for (BoundsChangeListener listener:boundsChangeListeners) {
|
||||
listener.boundsChanged(bounds, registrationPoint);
|
||||
listener.boundsChanged(bounds, registrationPoint, registrationPointPosition);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -413,7 +415,7 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
|
||||
transform = Matrix.getScaleInstance(1 / SWF.unitDivisor).concatenate(m).concatenate(new Matrix(ds.matrix));
|
||||
|
||||
Rectangle2D transformBounds = getTransformBounds();
|
||||
fireBoundsChange(transformBounds, new Point2D.Double(transformBounds.getCenterX(), transformBounds.getCenterY()));
|
||||
fireBoundsChange(transformBounds, new Point2D.Double(transformBounds.getCenterX(), transformBounds.getCenterY()), registrationPointPosition);
|
||||
/*System.out.println("ds.matrix=" + ds.matrix);
|
||||
System.out.println("transform=" + transform);
|
||||
System.out.println("offset=" + offsetPoint);
|
||||
@@ -686,10 +688,13 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
|
||||
|
||||
if (freeTransformDepth > -1 && mode != Cursor.DEFAULT_CURSOR && registrationPointUpdated != null && transformUpdated != null) {
|
||||
synchronized (lock) {
|
||||
registrationPoint = new Point2D.Double(registrationPointUpdated.getX(), registrationPointUpdated.getY());
|
||||
registrationPoint = new Point2D.Double(registrationPointUpdated.getX(), registrationPointUpdated.getY());
|
||||
if (mode == Cursor.HAND_CURSOR) {
|
||||
registrationPointPosition = null;
|
||||
}
|
||||
transform = new Matrix(transformUpdated);
|
||||
transformUpdated = null;
|
||||
fireBoundsChange(getTransformBounds(), getTransformRegistrationPoint());
|
||||
fireBoundsChange(getTransformBounds(), getTransformRegistrationPoint(), registrationPointPosition);
|
||||
}
|
||||
repaint();
|
||||
}
|
||||
@@ -1878,6 +1883,7 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
|
||||
this.muted = muted;
|
||||
this.mutable = mutable;
|
||||
this.showObjectsUnderCursor = showObjectsUnderCursor;
|
||||
this.registrationPointPosition = RegistrationPointPosition.CENTER;
|
||||
redraw();
|
||||
if (autoPlay) {
|
||||
play();
|
||||
@@ -3057,8 +3063,21 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
|
||||
|
||||
public void setRegistrationPoint(Point2D registrationPoint) {
|
||||
this.registrationPoint = toImageRegistrationPoint(registrationPoint);
|
||||
this.registrationPointPosition = null;
|
||||
redraw();
|
||||
fireBoundsChange(getTransformBounds(), getTransformRegistrationPoint());
|
||||
fireBoundsChange(getTransformBounds(), getTransformRegistrationPoint(), registrationPointPosition);
|
||||
}
|
||||
|
||||
public void setRegistrationPointPosition(RegistrationPointPosition position) {
|
||||
Rectangle2D transformBounds = getTransformBounds();
|
||||
Point2D newRegistrationPoint = new Point2D.Double(
|
||||
transformBounds.getX() + transformBounds.getWidth() * position.getPositionX(),
|
||||
transformBounds.getY() + transformBounds.getHeight() * position.getPositionY()
|
||||
);
|
||||
this.registrationPoint = toImageRegistrationPoint(newRegistrationPoint);
|
||||
this.registrationPointPosition = position;
|
||||
redraw();
|
||||
fireBoundsChange(getTransformBounds(), getTransformRegistrationPoint(), position);
|
||||
}
|
||||
|
||||
public void applyTransformMatrix(Matrix matrix) {
|
||||
@@ -3075,7 +3094,7 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
|
||||
registrationPoint = newRegistrationPoint;
|
||||
|
||||
redraw();
|
||||
fireBoundsChange(getTransformBounds(), getTransformRegistrationPoint());
|
||||
fireBoundsChange(getTransformBounds(), getTransformRegistrationPoint(), registrationPointPosition);
|
||||
}
|
||||
|
||||
private Point2D getTransformRegistrationPoint() {
|
||||
|
||||
@@ -144,8 +144,8 @@ public class TransformPanel extends JPanel {
|
||||
|
||||
imagePanel.addBoundsChangeListener(new BoundsChangeListener() {
|
||||
@Override
|
||||
public void boundsChanged(Rectangle2D newBounds, Point2D registraionPoint) {
|
||||
update(newBounds, registraionPoint);
|
||||
public void boundsChanged(Rectangle2D newBounds, Point2D registraionPoint, RegistrationPointPosition registrationPointPosition) {
|
||||
update(newBounds, registraionPoint, registrationPointPosition);
|
||||
}
|
||||
});
|
||||
setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
|
||||
@@ -384,9 +384,10 @@ public class TransformPanel extends JPanel {
|
||||
clearMatrixActionPerformed(null);
|
||||
}
|
||||
|
||||
private void update(Rectangle2D bounds, Point2D registraionPoint) {
|
||||
private void update(Rectangle2D bounds, Point2D registraionPoint, RegistrationPointPosition registrationPointPosition) {
|
||||
this.bounds = bounds;
|
||||
this.registrationPoint = registraionPoint;
|
||||
this.registrationPointPanel.setSelectedPosition(registrationPointPosition);
|
||||
if (!moveRelativeCheckBox.isSelected()) {
|
||||
moveHorizontalTextField.setText(formatDouble(convertUnit(bounds.getX(), Unit.TWIP, (Unit) moveUnitComboBox.getSelectedItem())));
|
||||
moveVerticalTextField.setText(formatDouble(convertUnit(bounds.getY(), Unit.TWIP, (Unit) moveUnitComboBox.getSelectedItem())));
|
||||
@@ -548,12 +549,7 @@ public class TransformPanel extends JPanel {
|
||||
}
|
||||
|
||||
private void registrationPointChangedActionPerformed(ActionEvent e) {
|
||||
RegistrationPointPosition position = registrationPointPanel.getSelectedPosition();
|
||||
Point2D newRegistrationPoint = new Point2D.Double(
|
||||
bounds.getX() + bounds.getWidth() * position.getPositionX(),
|
||||
bounds.getY() + bounds.getHeight() * position.getPositionY()
|
||||
);
|
||||
imagePanel.setRegistrationPoint(newRegistrationPoint);
|
||||
imagePanel.setRegistrationPointPosition(registrationPointPanel.getSelectedPosition());
|
||||
}
|
||||
|
||||
private void addJoinedRow(JPanel panel, int rownum, Component comp, int numCols) {
|
||||
@@ -665,6 +661,13 @@ class RegistrationPointPanel extends JPanel {
|
||||
public RegistrationPointPosition getSelectedPosition() {
|
||||
return selectedPosition;
|
||||
}
|
||||
|
||||
public void setSelectedPosition(RegistrationPointPosition selectedPosition) {
|
||||
this.selectedPosition = selectedPosition;
|
||||
repaint();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public RegistrationPointPanel(ActionListener listener) {
|
||||
this.listener = listener;
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 591 B After Width: | Height: | Size: 5.3 KiB |
Reference in New Issue
Block a user