mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-10 17:22:09 +10:00
Configurable hw acceleration
This commit is contained in:
@@ -71,7 +71,8 @@ public interface IPlugInPort extends ISelectionProcessor, IMouseProcessor, IKeyP
|
|||||||
public static final String RECENT_FILES_KEY = "recentFiles";
|
public static final String RECENT_FILES_KEY = "recentFiles";
|
||||||
public static final String SHOW_RULERS_KEY = "showRulers";
|
public static final String SHOW_RULERS_KEY = "showRulers";
|
||||||
public static final String SHOW_GRID_KEY = "showGrid";
|
public static final String SHOW_GRID_KEY = "showGrid";
|
||||||
public static final String HIGHLIGHT_CONTINUITY_AREA = "highlightContinuityArea";
|
public static final String HIGHLIGHT_CONTINUITY_AREA = "highlightContinuityArea";
|
||||||
|
public static final String HARDWARE_ACCELERATION = "hardwareAcceleration";
|
||||||
|
|
||||||
public static final int DND_TOGGLE_STICKY = 0x1;
|
public static final int DND_TOGGLE_STICKY = 0x1;
|
||||||
public static final int DND_TOGGLE_SNAP = 0x40000000;
|
public static final int DND_TOGGLE_SNAP = 0x40000000;
|
||||||
|
|||||||
Binary file not shown.
@@ -21,42 +21,42 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.swing.plugins.canvas;
|
package org.diylc.swing.plugins.canvas;
|
||||||
|
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.GraphicsConfiguration;
|
import java.awt.GraphicsConfiguration;
|
||||||
import java.awt.GraphicsDevice;
|
import java.awt.GraphicsDevice;
|
||||||
import java.awt.GraphicsEnvironment;
|
import java.awt.GraphicsEnvironment;
|
||||||
import java.awt.Image;
|
import java.awt.Image;
|
||||||
import java.awt.Insets;
|
import java.awt.Insets;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.dnd.Autoscroll;
|
import java.awt.dnd.Autoscroll;
|
||||||
import java.awt.dnd.DnDConstants;
|
import java.awt.dnd.DnDConstants;
|
||||||
import java.awt.dnd.DragSource;
|
import java.awt.dnd.DragSource;
|
||||||
import java.awt.dnd.DropTarget;
|
import java.awt.dnd.DropTarget;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ComponentAdapter;
|
import java.awt.event.ComponentAdapter;
|
||||||
import java.awt.event.ComponentEvent;
|
import java.awt.event.ComponentEvent;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.awt.image.VolatileImage;
|
import java.awt.image.VolatileImage;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.swing.AbstractAction;
|
import javax.swing.AbstractAction;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.KeyStroke;
|
import javax.swing.KeyStroke;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
import org.diylc.common.ComponentType;
|
import org.diylc.common.ComponentType;
|
||||||
import org.diylc.common.DrawOption;
|
import org.diylc.common.DrawOption;
|
||||||
import org.diylc.common.IBlockProcessor.InvalidBlockException;
|
import org.diylc.common.IBlockProcessor.InvalidBlockException;
|
||||||
import org.diylc.common.IPlugInPort;
|
import org.diylc.common.IPlugInPort;
|
||||||
import org.diylc.swing.plugins.tree.TreePanel;
|
import org.diylc.swing.plugins.tree.TreePanel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GUI class used to draw onto.
|
* GUI class used to draw onto.
|
||||||
@@ -74,7 +74,7 @@ public class CanvasPanel extends JComponent implements Autoscroll {
|
|||||||
private Image bufferImage;
|
private Image bufferImage;
|
||||||
private GraphicsConfiguration screenGraphicsConfiguration;
|
private GraphicsConfiguration screenGraphicsConfiguration;
|
||||||
|
|
||||||
public static boolean USE_HARDWARE_ACCELLERATION = false;
|
public boolean useHardwareAcceleration = false;
|
||||||
|
|
||||||
// static final EnumSet<DrawOption> DRAW_OPTIONS =
|
// static final EnumSet<DrawOption> DRAW_OPTIONS =
|
||||||
// EnumSet.of(DrawOption.GRID,
|
// EnumSet.of(DrawOption.GRID,
|
||||||
@@ -209,7 +209,7 @@ public class CanvasPanel extends JComponent implements Autoscroll {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void createBufferImage() {
|
protected void createBufferImage() {
|
||||||
if (USE_HARDWARE_ACCELLERATION) {
|
if (useHardwareAcceleration) {
|
||||||
bufferImage = screenGraphicsConfiguration.createCompatibleVolatileImage(getWidth(), getHeight());
|
bufferImage = screenGraphicsConfiguration.createCompatibleVolatileImage(getWidth(), getHeight());
|
||||||
((VolatileImage) bufferImage).validate(screenGraphicsConfiguration);
|
((VolatileImage) bufferImage).validate(screenGraphicsConfiguration);
|
||||||
} else {
|
} else {
|
||||||
@@ -238,7 +238,7 @@ public class CanvasPanel extends JComponent implements Autoscroll {
|
|||||||
drawOptions.add(DrawOption.GRID);
|
drawOptions.add(DrawOption.GRID);
|
||||||
}
|
}
|
||||||
plugInPort.draw(g2d, drawOptions, null);
|
plugInPort.draw(g2d, drawOptions, null);
|
||||||
if (USE_HARDWARE_ACCELLERATION) {
|
if (useHardwareAcceleration) {
|
||||||
VolatileImage volatileImage = (VolatileImage) bufferImage;
|
VolatileImage volatileImage = (VolatileImage) bufferImage;
|
||||||
do {
|
do {
|
||||||
try {
|
try {
|
||||||
@@ -301,5 +301,10 @@ public class CanvasPanel extends JComponent implements Autoscroll {
|
|||||||
public Insets getAutoscrollInsets() {
|
public Insets getAutoscrollInsets() {
|
||||||
Rectangle rect = getVisibleRect();
|
Rectangle rect = getVisibleRect();
|
||||||
return new Insets(rect.y - 15, rect.x - 15, rect.y + rect.height + 15, rect.x + rect.width + 15);
|
return new Insets(rect.y - 15, rect.x - 15, rect.y + rect.height + 15, rect.x + rect.width + 15);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUseHardwareAcceleration(boolean useHardwareAcceleration) {
|
||||||
|
this.useHardwareAcceleration = useHardwareAcceleration;
|
||||||
|
bufferImage = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,6 +124,7 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getScrollPane().setRulerVisible(ConfigurationManager.getInstance().readBoolean(IPlugInPort.SHOW_RULERS_KEY, true));
|
getScrollPane().setRulerVisible(ConfigurationManager.getInstance().readBoolean(IPlugInPort.SHOW_RULERS_KEY, true));
|
||||||
|
|
||||||
ConfigurationManager.getInstance().addConfigListener(IPlugInPort.SHOW_RULERS_KEY, new IConfigListener() {
|
ConfigurationManager.getInstance().addConfigListener(IPlugInPort.SHOW_RULERS_KEY, new IConfigListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -132,6 +133,15 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
|
|||||||
getScrollPane().setRulerVisible((Boolean) value);
|
getScrollPane().setRulerVisible((Boolean) value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ConfigurationManager.getInstance().addConfigListener(IPlugInPort.HARDWARE_ACCELERATION, new IConfigListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void valueChanged(String key, Object value) {
|
||||||
|
canvasPanel.setUseHardwareAcceleration((Boolean) value);
|
||||||
|
scrollPane.setUseHardwareAcceleration((Boolean) value);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public CanvasPanel getCanvasPanel() {
|
public CanvasPanel getCanvasPanel() {
|
||||||
|
|||||||
@@ -72,33 +72,36 @@ public class ConfigPlugin implements IPlugIn {
|
|||||||
swingUI.injectMenuAction(
|
swingUI.injectMenuAction(
|
||||||
ActionFactory.getInstance().createConfigAction(plugInPort, "Continuous Creation",
|
ActionFactory.getInstance().createConfigAction(plugInPort, "Continuous Creation",
|
||||||
IPlugInPort.CONTINUOUS_CREATION_KEY, false), CONFIG_MENU);
|
IPlugInPort.CONTINUOUS_CREATION_KEY, false), CONFIG_MENU);
|
||||||
swingUI.injectMenuAction(
|
|
||||||
ActionFactory.getInstance().createConfigAction(plugInPort, "Show Rulers", IPlugInPort.SHOW_RULERS_KEY, true),
|
|
||||||
CONFIG_MENU);
|
|
||||||
swingUI.injectMenuAction(
|
|
||||||
ActionFactory.getInstance().createConfigAction(plugInPort, "Show Grid", IPlugInPort.SHOW_GRID_KEY, true),
|
|
||||||
CONFIG_MENU);
|
|
||||||
swingUI.injectMenuAction(
|
swingUI.injectMenuAction(
|
||||||
ActionFactory.getInstance().createConfigAction(plugInPort, "Export Grid", IPlugInPort.EXPORT_GRID_KEY, false),
|
ActionFactory.getInstance().createConfigAction(plugInPort, "Export Grid", IPlugInPort.EXPORT_GRID_KEY, false),
|
||||||
CONFIG_MENU);
|
CONFIG_MENU);
|
||||||
|
swingUI.injectMenuAction(
|
||||||
|
ActionFactory.getInstance().createConfigAction(plugInPort, "Hardware Acceleration", IPlugInPort.HARDWARE_ACCELERATION, false),
|
||||||
|
CONFIG_MENU);
|
||||||
swingUI.injectMenuAction(
|
swingUI.injectMenuAction(
|
||||||
ActionFactory.getInstance().createConfigAction(plugInPort, "Hi-Quality Rendering",
|
ActionFactory.getInstance().createConfigAction(plugInPort, "Hi-Quality Rendering",
|
||||||
IPlugInPort.HI_QUALITY_RENDER_KEY, false), CONFIG_MENU);
|
IPlugInPort.HI_QUALITY_RENDER_KEY, false), CONFIG_MENU);
|
||||||
|
swingUI.injectMenuAction(
|
||||||
|
ActionFactory.getInstance().createConfigAction(plugInPort, "Highlight Connected Areas",
|
||||||
|
IPlugInPort.HIGHLIGHT_CONTINUITY_AREA, false, IPlugInPort.HIGHLIGHT_CONTINUITY_AREA), CONFIG_MENU);
|
||||||
swingUI.injectMenuAction(
|
swingUI.injectMenuAction(
|
||||||
ActionFactory.getInstance().createConfigAction(plugInPort, "Mouse Wheel Zoom", IPlugInPort.WHEEL_ZOOM_KEY,
|
ActionFactory.getInstance().createConfigAction(plugInPort, "Mouse Wheel Zoom", IPlugInPort.WHEEL_ZOOM_KEY,
|
||||||
false), CONFIG_MENU);
|
false), CONFIG_MENU);
|
||||||
swingUI.injectMenuAction(
|
swingUI.injectMenuAction(
|
||||||
ActionFactory.getInstance().createConfigAction(plugInPort, "Outline Mode", IPlugInPort.OUTLINE_KEY, false),
|
ActionFactory.getInstance().createConfigAction(plugInPort, "Outline Mode", IPlugInPort.OUTLINE_KEY, false),
|
||||||
CONFIG_MENU);
|
CONFIG_MENU);
|
||||||
|
swingUI.injectMenuAction(
|
||||||
|
ActionFactory.getInstance().createConfigAction(plugInPort, "Show Rulers", IPlugInPort.SHOW_RULERS_KEY, true),
|
||||||
|
CONFIG_MENU);
|
||||||
|
swingUI.injectMenuAction(
|
||||||
|
ActionFactory.getInstance().createConfigAction(plugInPort, "Show Grid", IPlugInPort.SHOW_GRID_KEY, true),
|
||||||
|
CONFIG_MENU);
|
||||||
swingUI.injectMenuAction(
|
swingUI.injectMenuAction(
|
||||||
ActionFactory.getInstance().createConfigAction(plugInPort, "Snap to Grid", IPlugInPort.SNAP_TO_GRID_KEY, true),
|
ActionFactory.getInstance().createConfigAction(plugInPort, "Snap to Grid", IPlugInPort.SNAP_TO_GRID_KEY, true),
|
||||||
CONFIG_MENU);
|
CONFIG_MENU);
|
||||||
swingUI.injectMenuAction(
|
swingUI.injectMenuAction(
|
||||||
ActionFactory.getInstance()
|
ActionFactory.getInstance()
|
||||||
.createConfigAction(plugInPort, "Sticky Points", IPlugInPort.STICKY_POINTS_KEY, true), CONFIG_MENU);
|
.createConfigAction(plugInPort, "Sticky Points", IPlugInPort.STICKY_POINTS_KEY, true), CONFIG_MENU);
|
||||||
swingUI.injectMenuAction(
|
|
||||||
ActionFactory.getInstance().createConfigAction(plugInPort, "Highlight Connected Areas",
|
|
||||||
IPlugInPort.HIGHLIGHT_CONTINUITY_AREA, false, IPlugInPort.HIGHLIGHT_CONTINUITY_AREA), CONFIG_MENU);
|
|
||||||
|
|
||||||
File themeDir = new File("themes");
|
File themeDir = new File("themes");
|
||||||
if (themeDir.exists()) {
|
if (themeDir.exists()) {
|
||||||
|
|||||||
@@ -2258,6 +2258,10 @@
|
|||||||
<releaseDate>2019-01-16 00:00:00.000 CET</releaseDate>
|
<releaseDate>2019-01-16 00:00:00.000 CET</releaseDate>
|
||||||
<name></name>
|
<name></name>
|
||||||
<changes>
|
<changes>
|
||||||
|
<org.diylc.appframework.update.Change>
|
||||||
|
<changeType>NEW_FEATURE</changeType>
|
||||||
|
<description>Configurable graphics hardware acceleration</description>
|
||||||
|
</org.diylc.appframework.update.Change>
|
||||||
<org.diylc.appframework.update.Change>
|
<org.diylc.appframework.update.Change>
|
||||||
<changeType>IMPROVEMENT</changeType>
|
<changeType>IMPROVEMENT</changeType>
|
||||||
<description>Fixed the issue with Ohm symbol rendering with some fonts and changed default project font back to "Square721 BT"</description>
|
<description>Fixed the issue with Ohm symbol rendering with some fonts and changed default project font back to "Square721 BT"</description>
|
||||||
|
|||||||
Reference in New Issue
Block a user