Added: #2370 Objects display - Option to show horizontal and vertical rulers

This commit is contained in:
Jindra Petřík
2025-05-03 14:30:41 +02:00
parent b63371f7e0
commit 3236111fea
11 changed files with 270 additions and 51 deletions
+3 -2
View File
@@ -5,11 +5,11 @@ All notable changes to this project will be documented in this file.
### Added
- [#2427] Commandline export with use of imported SWFs (importAssets tag)
- Auto detect scale factor on Hi-dpi displays
- [#1826] (Optional) Extending shape area by half pixel to fix antialias conflation artifacts
(Can be turned on in advanced settings)
- [#1826] Option to extend shape area by half pixel to fix antialias conflation artifacts
- Icons for Simple editor library folders
- [#2448] Simple editor - Option to turn off half transparent parent layers
- Localized "Open with FFDec" context menu (switch association off/on to apply if already installed)
- [#2370] Objects display - Option to show horizontal and vertical rulers
### Fixed
- [#2424] DefineEditText handling of letterSpacing, font size on incorrect values
@@ -3742,6 +3742,7 @@ Major version of SWF to XML export changed to 2.
[#2427]: https://www.free-decompiler.com/flash/issues/2427
[#1826]: https://www.free-decompiler.com/flash/issues/1826
[#2448]: https://www.free-decompiler.com/flash/issues/2448
[#2370]: https://www.free-decompiler.com/flash/issues/2370
[#2424]: https://www.free-decompiler.com/flash/issues/2424
[#2391]: https://www.free-decompiler.com/flash/issues/2391
[#2436]: https://www.free-decompiler.com/flash/issues/2436
@@ -1053,6 +1053,11 @@ public final class Configuration {
@ConfigurationCategory("display")
public static ConfigurationItem<Boolean> halfTransparentParentLayersEasy = null;
@ConfigurationDefaultBoolean(false)
@ConfigurationCategory("display")
public static ConfigurationItem<Boolean> showRuler = null;
private enum OSId {
WINDOWS, OSX, UNIX
}
@@ -527,7 +527,7 @@ public class EasySwfPanel extends JPanel {
if (obj instanceof Tag) {
Tag t = (Tag) obj;
libraryPreviewPanel.setTimelined(TimelinedMaker.makeTimelined(t), t.getSwf(),
-1, false, true, true, true, true, false, true, true);
-1, false, true, true, true, true, false, true, true, true);
libraryPreviewPanel.zoomFit();
} else {
libraryPreviewPanel.clearAll();
@@ -579,7 +579,7 @@ public class EasySwfPanel extends JPanel {
libraryTreeTable.setSwf(swf);
libraryPreviewPanel.clearAll();
if (updateStage) {
stagePanel.setTimelined(timelined, swf, 0, true, true, true, true, true, false, true, true);
stagePanel.setTimelined(timelined, swf, 0, true, true, true, true, true, false, true, true, true);
stagePanel.pause();
stagePanel.gotoFrame(0);
}
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.LocalDataArea;
import com.jpexs.decompiler.flash.action.Stage;
import com.jpexs.decompiler.flash.configuration.Configuration;
import com.jpexs.decompiler.flash.configuration.ConfigurationItemChangeListener;
import com.jpexs.decompiler.flash.ecma.Undefined;
import com.jpexs.decompiler.flash.exporters.commonshape.ExportRectangle;
import com.jpexs.decompiler.flash.exporters.commonshape.Matrix;
@@ -62,13 +63,16 @@ import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Shape;
@@ -112,6 +116,7 @@ import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
@@ -329,6 +334,12 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
private final List<Timelined> parentTimelineds = new ArrayList<>();
private JPanel topRuler;
private JPanel leftRuler;
private boolean contentCanHaveRuler = false;
public void setFrozenButtons(boolean frozenButtons) {
this.frozenButtons = frozenButtons;
}
@@ -359,6 +370,8 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
public void setTopPanelVisible(boolean visible) {
topPanel.setVisible(visible);
updateRulerVisibility();
}
public void setShowPoints(List<java.awt.Point> showPoints1, List<java.awt.Point> showPoints2) {
@@ -2456,6 +2469,42 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
}
}
private Integer getRulerFullLinePixels(double z) {
if (z < 0.0375) {
return null;
}
int fullLinePixels = 2000;
if (z >= 0.075) {
fullLinePixels = 1000;
}
if (z >= 0.15) {
fullLinePixels = 500;
}
if (z >= 0.31) {
fullLinePixels = 100;
}
if (z >= 0.6) {
fullLinePixels = 50;
}
if (z >= 1.5) {
fullLinePixels = 20;
}
if (z >= 2.99) {
fullLinePixels = 10;
}
if (z >= 5.95) {
fullLinePixels = 5;
}
if (z >= 14.64) {
fullLinePixels = 2;
}
return fullLinePixels;
}
public ImagePanel() {
super(new BorderLayout());
//iconPanel.setHorizontalAlignment(JLabel.CENTER);
@@ -2502,9 +2551,149 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
pointEditPanel.setAlignmentX(JPanel.LEFT_ALIGNMENT);
topPanel.add(pointEditPanel);
topRuler = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
double z = getRealZoom();
Integer fullLinePixels = getRulerFullLinePixels(z);
if (fullLinePixels == null) {
return;
}
double fullLineDistance = fullLinePixels * z;
double leftOffset = 25;
Graphics2D g2 = (Graphics2D) g;
g2.setFont(new Font("Monospaced", Font.PLAIN, 12));
GeneralPath gp = new GeneralPath();
double minX = leftOffset + offsetPoint.getX();
for (; minX >= 0; minX -= fullLineDistance) {
//empty
}
for (double x = minX; x < getWidth(); x += fullLineDistance) {
gp.moveTo(x, 0);
gp.lineTo(x, getHeight());
int px = (int) Math.round((x - leftOffset - offsetPoint.getX()) / z);
int smallLineLength = 4;
int smallerLineLength = 2;
int k = 0;
for (double i = 0; i < fullLineDistance; i += fullLineDistance / 10.0, k++) {
gp.moveTo(x + i, 25);
gp.lineTo(x + i, 25 - (k % 2 == 0 ? smallLineLength : smallerLineLength));
}
g2.drawString("" + px, (int) x + 5, 15);
}
g2.setStroke(new BasicStroke(1, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_BEVEL));
g2.draw(gp);
if (lastMouseEvent != null) {
int triangleX = lastMouseEvent.getX() + 25;
int triangleHalfWidth = 3;
int triangleHeight = 3;
int triangleYOffset = 3;
Polygon triangle = new Polygon(
new int[]{triangleX - triangleHalfWidth, triangleX + triangleHalfWidth, triangleX},
new int[]{25 - triangleHeight - triangleYOffset, 25 - triangleHeight - triangleYOffset, 25 - triangleYOffset},
3);
g2.setPaint(getForeground());
g2.fill(triangle);
}
g2.setPaint(getBackground());
g2.fillRect(0, 0, 25, 25);
}
};
topRuler.setPreferredSize(new Dimension(1, 25));
topPanel.add(topRuler);
leftRuler = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
double z = getRealZoom();
Integer fullLinePixels = getRulerFullLinePixels(z);
if (fullLinePixels == null) {
return;
}
double fullLineDistance = fullLinePixels * z;
double topOffset = 0;
Graphics2D g2 = (Graphics2D) g;
g2.setFont(new Font("Monospaced", Font.PLAIN, 12));
GeneralPath gp = new GeneralPath();
double minY = topOffset + offsetPoint.getY();
for (; minY >= 0; minY -= fullLineDistance) {
//empty
}
AffineTransform origTransform = g2.getTransform();
for (double y = minY; y < getHeight(); y += fullLineDistance) {
gp.moveTo(0, y);
gp.lineTo(getWidth(), y);
int py = (int) Math.round((y - topOffset - offsetPoint.getY()) / z);
int smallLineLength = 4;
int smallerLineLength = 2;
int k = 0;
for (double i = 0; i < fullLineDistance; i += fullLineDistance / 10.0, k++) {
gp.moveTo(25, y + i);
gp.lineTo(25 - (k % 2 == 0 ? smallLineLength : smallerLineLength), y + i);
}
g2.setTransform(origTransform);
String drawnString = "" + py;
int stringWidth = g2.getFontMetrics().stringWidth(drawnString);
AffineTransform fontTrans = new AffineTransform();
fontTrans.rotate(-Math.PI / 2, 15, 15);
g2.transform(fontTrans);
g2.drawString(drawnString, 15 - stringWidth + 15 - 5 - Math.round(y), 15);
}
g2.setTransform(origTransform);
if (lastMouseEvent != null) {
int triangleY = lastMouseEvent.getY();
int triangleHalfHeight = 3;
int triangleWidth = 3;
int triangleXOffset = 3;
Polygon triangle = new Polygon(
new int[]{25 - triangleWidth - triangleXOffset, 25 - triangleWidth - triangleXOffset, 25 - triangleXOffset},
new int[]{triangleY - triangleHalfHeight, triangleY + triangleHalfHeight, triangleY},
3);
g2.setPaint(getForeground());
g2.fill(triangle);
}
g2.setStroke(new BasicStroke(1, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_BEVEL));
g2.draw(gp);
}
};
leftRuler.setPreferredSize(new Dimension(25, 1));
add(leftRuler, BorderLayout.WEST);
pointEditPanel.setVisible(false);
add(topPanel, BorderLayout.NORTH);
leftRuler.setVisible(false);
topRuler.setVisible(false);
Configuration.showRuler.addListener(new ConfigurationItemChangeListener<Boolean>() {
@Override
public void configurationItemChanged(Boolean newValue) {
updateRulerVisibility();
}
});
horizontalScrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
verticalScrollBar = new JScrollBar(JScrollBar.VERTICAL);
@@ -2656,6 +2845,8 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
if (timelined == null) {
return;
}
leftRuler.repaint();
topRuler.repaint();
if (thisTimer == null) {
startTimer(timelined.getTimeline(), false);
} else {
@@ -2847,6 +3038,9 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
if (textTag != null) {
setText(textTag, newTextTag);
}
topRuler.repaint();
leftRuler.repaint();
fireMediaDisplayStateChanged();
}
}
@@ -2899,7 +3093,7 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
private Timer setTimelinedTimer = null;
public void setTimelined(final Timelined drawable, final SWF swf, int frame, boolean showObjectsUnderCursor, boolean autoPlay, boolean frozen, boolean alwaysDisplay, boolean muted, boolean mutable, boolean allowZoom, boolean frozenButtons) {
public void setTimelined(final Timelined drawable, final SWF swf, int frame, boolean showObjectsUnderCursor, boolean autoPlay, boolean frozen, boolean alwaysDisplay, boolean muted, boolean mutable, boolean allowZoom, boolean frozenButtons, boolean canHaveRuler) {
Stage stage = new Stage(drawable) {
@Override
public void callFrame(int frame) {
@@ -3018,6 +3212,9 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
this.showObjectsUnderCursor = showObjectsUnderCursor;
this.registrationPointPosition = RegistrationPointPosition.CENTER;
iconPanel.calcRect();
contentCanHaveRuler = canHaveRuler;
updateRulerVisibility();
redraw();
if (autoPlay) {
play();
@@ -3058,9 +3255,17 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
horizontalScrollBar.setVisible(false);
verticalScrollBar.setVisible(false);
contentCanHaveRuler = false;
updateRulerVisibility();
fireMediaDisplayStateChanged();
}
private void updateRulerVisibility() {
topRuler.setVisible(contentCanHaveRuler && topPanel.isVisible() && Configuration.showRuler.get());
leftRuler.setVisible(contentCanHaveRuler && topPanel.isVisible() && Configuration.showRuler.get());
}
public synchronized void setText(TextTag textTag, TextTag newTextTag) {
setBackground(View.getSwfBackgroundColor());
clear();
@@ -3071,6 +3276,9 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
stillFrame = true;
zoomAvailable = true;
contentCanHaveRuler = true;
updateRulerVisibility();
this.textTag = textTag;
this.newTextTag = newTextTag;
@@ -3350,7 +3558,6 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
}
//Matrix finalMatrix = Matrix.getScaleInstance(1 / SWF.unitDivisor).concatenate(m).concatenate(new Matrix(ds.matrix));
Matrix transform2 = transform;
transform2 = transform.concatenate(new Matrix(ds.matrix));
@@ -5852,7 +5852,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
if (treeItem instanceof SWF) {
SWF swf = (SWF) treeItem;
if (internalViewer) {
previewPanel.showImagePanel(swf, swf, -1, true, Configuration.autoPlaySwfs.get() && Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
previewPanel.showImagePanel(swf, swf, -1, true, Configuration.autoPlaySwfs.get() && Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, true);
} else {
previewPanel.setParametersPanelVisible(false);
previewPanel.showFlashViewerPanel();
@@ -5884,7 +5884,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
ImageTag imageTag = (ImageTag) treeItem;
previewPanel.setImageReplaceButtonVisible(!((Tag) imageTag).isReadOnly() && imageTag.importSupported(), imageTag instanceof DefineBitsJPEG3Tag || imageTag instanceof DefineBitsJPEG4Tag, false, false, false, false, false);
SWF imageSWF = TimelinedMaker.makeTimelinedImage(imageTag);
previewPanel.showImagePanel(imageSWF, imageSWF, 0, false, true, true, true, true, false, false, true, true);
previewPanel.showImagePanel(imageSWF, imageSWF, 0, false, true, true, true, true, false, false, true, true, true);
} else if (!isVideoButNotDrawable && (treeItem instanceof DrawableTag) && (!(treeItem instanceof TextTag)) && (!(treeItem instanceof FontTag)) && internalViewer) {
final Tag tag = (Tag) treeItem;
DrawableTag d = (DrawableTag) tag;
@@ -5905,11 +5905,11 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
if (treeItem instanceof DefineSpriteTag) {
previewPanel.setImageReplaceButtonVisible(false, false, false, false, false, false, !((Tag) treeItem).isReadOnly());
}
previewPanel.showImagePanel(timelined, tag.getSwf(), -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get() && !(treeItem instanceof ButtonTag), treeItem instanceof ShapeTag, !Configuration.playFrameSounds.get(), (treeItem instanceof DefineSpriteTag) || (treeItem instanceof ButtonTag), (treeItem instanceof DefineSpriteTag) || (treeItem instanceof ButtonTag) || (treeItem instanceof ShapeTag), true, false);
previewPanel.showImagePanel(timelined, tag.getSwf(), -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get() && !(treeItem instanceof ButtonTag), treeItem instanceof ShapeTag, !Configuration.playFrameSounds.get(), (treeItem instanceof DefineSpriteTag) || (treeItem instanceof ButtonTag), (treeItem instanceof DefineSpriteTag) || (treeItem instanceof ButtonTag) || (treeItem instanceof ShapeTag), true, false, true);
} else if (treeItem instanceof Frame && internalViewer) {
Frame fn = (Frame) treeItem;
SWF swf = (SWF) fn.getOpenable();
previewPanel.showImagePanel(fn.timeline.timelined, swf, fn.frame, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
previewPanel.showImagePanel(fn.timeline.timelined, swf, fn.frame, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, true);
} else if (treeItem instanceof ShowFrameTag) {
SWF swf;
if (timelinedContainer instanceof DefineSpriteTag) {
@@ -5917,7 +5917,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
} else {
swf = (SWF) timelinedContainer;
}
previewPanel.showImagePanel(timelinedContainer, swf, frame, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
previewPanel.showImagePanel(timelinedContainer, swf, frame, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, true);
} else if ((treeItem instanceof SoundTag)) { //&& isInternalFlashViewerSelected() && (Arrays.asList("mp3", "wav").contains(((SoundTag) tagObj).getExportFormat())))) {
previewPanel.showImagePanel(new SerializableImage(View.loadImage("sound32")));
previewPanel.setImageReplaceButtonVisible(false, false, false, !((SoundTag) treeItem).isReadOnly() && ((SoundTag) treeItem).importSupported(), false, false, false);
@@ -6049,7 +6049,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
return getRect();
}
};
previewPanel.showImagePanel(tim, origSwf, 0, true, true, !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, true);
previewPanel.showImagePanel(tim, origSwf, 0, true, true, !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, true, true);
} else if (treeItem instanceof DefineFont4Tag) {
previewPanel.showGenericTagPanel((Tag) treeItem);
} else {
@@ -1689,7 +1689,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
showCardLeft(FLASH_VIEWER_CARD);
}
public void showImagePanel(Timelined timelined, SWF swf, int frame, boolean showObjectsUnderCursor, boolean autoPlay, boolean frozen, boolean alwaysDisplay, boolean muted, boolean mutable, boolean allowFreeTransform, boolean allowZoom, boolean frozenButtons) {
public void showImagePanel(Timelined timelined, SWF swf, int frame, boolean showObjectsUnderCursor, boolean autoPlay, boolean frozen, boolean alwaysDisplay, boolean muted, boolean mutable, boolean allowFreeTransform, boolean allowZoom, boolean frozenButtons, boolean canHaveRuler) {
showCardLeft(DRAW_PREVIEW_CARD);
parametersPanel.setVisible(false);
imagePlayControls.setMedia(imagePanel);
@@ -1699,7 +1699,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
}
imageTransformSaveButton.setVisible(false);
imageTransformCancelButton.setVisible(false);
imagePanel.setTimelined(timelined, swf, frame, showObjectsUnderCursor, autoPlay, frozen, alwaysDisplay, muted, mutable, allowZoom, frozenButtons);
imagePanel.setTimelined(timelined, swf, frame, showObjectsUnderCursor, autoPlay, frozen, alwaysDisplay, muted, mutable, allowZoom, frozenButtons, canHaveRuler);
}
public void showImagePanel(SerializableImage image) {
@@ -1738,7 +1738,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
private void showFontPage(FontTag fontTag) {
if (!MainPanel.isAdobeFlashPlayerEnabled() /*|| ft instanceof GFxDefineCompactedFont*/) {
showImagePanel(TimelinedMaker.makeTimelined(fontTag), fontTag.getSwf(), fontPageNum, true, true, true, true, true, false, false, false, true);
showImagePanel(TimelinedMaker.makeTimelined(fontTag), fontTag.getSwf(), fontPageNum, true, true, true, true, true, false, false, false, true, false);
}
}
@@ -1757,7 +1757,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
public void showTextPanel(TextTag textTag) {
if (!MainPanel.isAdobeFlashPlayerEnabled() /*|| ft instanceof GFxDefineCompactedFont*/) {
showImagePanel(TimelinedMaker.makeTimelined(textTag), textTag.getSwf(), 0, true, true, true, true, true, false, false, true, true);
showImagePanel(TimelinedMaker.makeTimelined(textTag), textTag.getSwf(), 0, true, true, true, true, true, false, false, true, true, true);
}
showCardRight(CARDTEXTPANEL);
@@ -2028,16 +2028,16 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
displayEditImagePanel.selectDepth(-1);
if (tag instanceof ShapeTag) {
Timelined tim = TimelinedMaker.makeTimelined(tag);
displayEditImagePanel.setTimelined(tim, ((Tag) tag).getSwf(), 0, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), false, true, true);
displayEditImagePanel.setTimelined(tim, ((Tag) tag).getSwf(), 0, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), false, true, true, true);
}
if (tag instanceof MorphShapeTag) {
Timelined tim = TimelinedMaker.makeTimelined(tag);
displayEditImagePanel.setTimelined(tim, ((Tag) tag).getSwf(), -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), false, true, true);
displayEditImagePanel.setTimelined(tim, ((Tag) tag).getSwf(), -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), false, true, true, true);
morphDisplayMode = MORPH_ANIMATE;
displayEditShowAnimationButton.setSelected(true);
}
if (tag instanceof PlaceObjectTypeTag) {
displayEditImagePanel.setTimelined(((Tag) tag).getTimelined(), ((Tag) tag).getSwf(), frame, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, true, true);
displayEditImagePanel.setTimelined(((Tag) tag).getTimelined(), ((Tag) tag).getSwf(), frame, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, true, true, true);
PlaceObjectTypeTag place = (PlaceObjectTypeTag) tag;
displayEditImagePanel.selectDepth(place.getDepth());
}
@@ -2718,19 +2718,19 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
private void showAnimationDisplayEditTagButtonActionPerformed(ActionEvent evt) {
morphDisplayMode = MORPH_ANIMATE;
Timelined tim = TimelinedMaker.makeTimelined(displayEditTag);
displayEditImagePanel.setTimelined(tim, displayEditTag.getSwf(), -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), false, true, true);
displayEditImagePanel.setTimelined(tim, displayEditTag.getSwf(), -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), false, true, true, true);
}
private void showStartDisplayEditTagButtonActionPerformed(ActionEvent evt) {
morphDisplayMode = MORPH_START;
Timelined tim = TimelinedMaker.makeTimelined(displayEditTag);
displayEditImagePanel.setTimelined(tim, displayEditTag.getSwf(), 0, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), false, true, true);
displayEditImagePanel.setTimelined(tim, displayEditTag.getSwf(), 0, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), false, true, true, true);
}
private void showEndDisplayEditTagButtonActionPerformed(ActionEvent evt) {
morphDisplayMode = MORPH_END;
Timelined tim = TimelinedMaker.makeTimelined(displayEditTag);
displayEditImagePanel.setTimelined(tim, displayEditTag.getSwf(), tim.getFrameCount() - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), false, true, true);
displayEditImagePanel.setTimelined(tim, displayEditTag.getSwf(), tim.getFrameCount() - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), false, true, true, true);
}
private void editPointsDisplayEditTagButtonActionPerformed(ActionEvent evt) {
@@ -3075,7 +3075,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
}
};
imagePanel.setTimelined(tim, origSwf, 0, true, true, true, true, true, false, true, true);
imagePanel.setTimelined(tim, origSwf, 0, true, true, true, true, true, false, true, true, true);
imagePanel.selectDepth(-1);
replaceSpriteButton.setVisible(false);
@@ -3187,7 +3187,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
int pageCount = getFontPageCount(fontTag);
fontPageNum = (fontPageNum + pageCount - 1) % pageCount;
if (!MainPanel.isAdobeFlashPlayerEnabled() /*|| ft instanceof GFxDefineCompactedFont*/) {
imagePanel.setTimelined(TimelinedMaker.makeTimelined(fontTag, fontPageNum), fontTag.getSwf(), 0, true, true, true, true, true, false, false, true);
imagePanel.setTimelined(TimelinedMaker.makeTimelined(fontTag, fontPageNum), fontTag.getSwf(), 0, true, true, true, true, true, false, false, true, false);
}
}
@@ -3196,7 +3196,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
int pageCount = getFontPageCount(fontTag);
fontPageNum = (fontPageNum + 1) % pageCount;
if (!MainPanel.isAdobeFlashPlayerEnabled() /*|| ft instanceof GFxDefineCompactedFont*/) {
imagePanel.setTimelined(TimelinedMaker.makeTimelined(fontTag, fontPageNum), fontTag.getSwf(), 0, true, true, true, true, true, false, false, true);
imagePanel.setTimelined(TimelinedMaker.makeTimelined(fontTag, fontPageNum), fontTag.getSwf(), 0, true, true, true, true, true, false, false, true, false);
}
}
@@ -493,9 +493,9 @@ public class SelectFramePositionDialog extends AppDialog {
int f = ((MyFrame) tnode.getData()).frame;
Object parent = ((MyTreeNode) tnode.getParent()).getData();
if (parent instanceof DefineSpriteTag) {
previewPanel.showImagePanel((DefineSpriteTag) parent, swf, f - 1, true, true, !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
previewPanel.showImagePanel((DefineSpriteTag) parent, swf, f - 1, true, true, !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
} else {
previewPanel.showImagePanel(swf, swf, f - 1, true, true, !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
previewPanel.showImagePanel(swf, swf, f - 1, true, true, !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
}
} else {
previewPanel.showEmpty();
@@ -493,9 +493,9 @@ public class SelectTagPositionDialog extends AppDialog {
int f = ((MyFrame) tnode.getData()).frame;
Object parent = ((MyTreeNode) tnode.getParent()).getData();
if (parent instanceof DefineSpriteTag) {
previewPanel.showImagePanel((DefineSpriteTag) parent, swf, f - 1, true, true, !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
previewPanel.showImagePanel((DefineSpriteTag) parent, swf, f - 1, true, true, !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
} else {
previewPanel.showImagePanel(swf, swf, f - 1, true, true, !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
previewPanel.showImagePanel(swf, swf, f - 1, true, true, !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
}
} else {
previewPanel.showEmpty();
@@ -732,22 +732,22 @@ public class AddScriptDialog extends AppDialog {
int f = ((MyFrame) ((MyTreeNode) tnode.getParent()).getData()).frame;
Object parent = ((MyTreeNode) tnode.getParent().getParent()).getData();
if (parent instanceof DefineSpriteTag) {
instancePreviewPanel.showImagePanel((DefineSpriteTag) parent, swf, f - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
instancePreviewPanel.showImagePanel((DefineSpriteTag) parent, swf, f - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
} else {
instancePreviewPanel.showImagePanel(swf, swf, f - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
instancePreviewPanel.showImagePanel(swf, swf, f - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
}
} else if (tnode.getData() instanceof DefineSpriteTag) {
instancePreviewPanel.selectImageDepth(-1);
instancePreviewPanel.showImagePanel((DefineSpriteTag) tnode.getData(), swf, -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
instancePreviewPanel.showImagePanel((DefineSpriteTag) tnode.getData(), swf, -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
} else if (tnode.getData() instanceof MyFrame) {
instancePreviewPanel.selectImageDepth(-1);
int f = ((MyFrame) tnode.getData()).frame;
Object parent = ((MyTreeNode) tnode.getParent()).getData();
if (parent instanceof DefineSpriteTag) {
instancePreviewPanel.showImagePanel((DefineSpriteTag) parent, swf, f - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
instancePreviewPanel.showImagePanel((DefineSpriteTag) parent, swf, f - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
} else {
instancePreviewPanel.showImagePanel(swf, swf, f - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
instancePreviewPanel.showImagePanel(swf, swf, f - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
}
}
checkEnabled();
@@ -761,7 +761,7 @@ public class AddScriptDialog extends AppDialog {
checkEnabled();
return;
}
spriteInitPreviewPanel.showImagePanel(spriteInitList.getSelectedValue(), swf, -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
spriteInitPreviewPanel.showImagePanel(spriteInitList.getSelectedValue(), swf, -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
checkEnabled();
}
@@ -773,7 +773,7 @@ public class AddScriptDialog extends AppDialog {
checkEnabled();
return;
}
framePreviewPanel.showImagePanel(swf, swf, selectedIndex, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
framePreviewPanel.showImagePanel(swf, swf, selectedIndex, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
int f = selectedIndex + 1;
if (!frameTextField.getText().equals("" + f)) {
@@ -785,7 +785,7 @@ public class AddScriptDialog extends AppDialog {
private void buttonValueChanged(ListSelectionEvent e) {
buttonPreviewPanel.showEmpty();
if (buttonList.getSelectedIndex() >= 0) {
buttonPreviewPanel.showImagePanel(TimelinedMaker.makeTimelined(buttonList.getSelectedValue()), swf, -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
buttonPreviewPanel.showImagePanel(TimelinedMaker.makeTimelined(buttonList.getSelectedValue()), swf, -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
}
checkEnabled();
@@ -801,14 +801,14 @@ public class AddScriptDialog extends AppDialog {
}
MyTreeNode tnode = (MyTreeNode) selection.getLastPathComponent();
if (tnode.getData() instanceof DefineSpriteTag) {
spriteFramePreviewPanel.showImagePanel((DefineSpriteTag) tnode.getData(), swf, -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
spriteFramePreviewPanel.showImagePanel((DefineSpriteTag) tnode.getData(), swf, -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
} else if (tnode.getData() instanceof MyFrame) {
int f = ((MyFrame) tnode.getData()).frame;
Object parent = ((MyTreeNode) tnode.getParent()).getData();
if (parent instanceof DefineSpriteTag) {
spriteFramePreviewPanel.showImagePanel((DefineSpriteTag) parent, swf, f - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
spriteFramePreviewPanel.showImagePanel((DefineSpriteTag) parent, swf, f - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
} else {
spriteFramePreviewPanel.showImagePanel(swf, swf, f - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false);
spriteFramePreviewPanel.showImagePanel(swf, swf, f - 1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false, true, false, false);
}
if (!spriteFrameTextField.getText().equals("" + f)) {
spriteFrameTextField.setText("" + f);
@@ -556,3 +556,6 @@ config.description.lastSolEditorDirectory = Directory where last SOL file was op
#after 22.0.2
config.name.halfTransparentParentLayersEasy = Half transparent parent layers in Simple editor
config.description.halfTransparentParentLayersEasy = Shows parent layers when editing subMovieClips as half transparent. False = do not show parent layers at all.
config.name.showRuler = Show ruler
config.description.showRuler = Show ruler when displaying / editing SWF objects.
@@ -554,3 +554,6 @@ config.description.lastSolEditorDirectory = Adres\u00e1\u0159, kde byl posledn\u
#after 22.0.2
config.name.halfTransparentParentLayersEasy = Pr\u016fsvitn\u00e9 nad\u0159azen\u00e9 vrstvy v Simple editoru
config.description.halfTransparentParentLayersEasy = Zobraz\u00ed nad\u0159azen\u00e9 vrstvy p\u0159i editaci animovan\u00fdch podklip\u016f pr\u016fsvitn\u011b. Vypnuto = nezobraz\u00ed nad\u0159azen\u00e9 vrstvy v\u016fbec.
config.name.showRuler = Zobrazit prav\u00edtko
config.description.showRuler = Zobrazit prav\u00edtko p\u0159i zobrazov\u00e1n\u00ed / editaci SWF objekt\u016f.