mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
Updated configuration and led-display
Former-commit-id: a768b70fa40c1b78da9e7b7c6380734211b28bf5
This commit is contained in:
parent
b1b6de7ce6
commit
7c15c97904
@ -5,6 +5,7 @@ import java.awt.geom.Rectangle2D;
|
|||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import org.hyperion.config.spec.BorderSide;
|
import org.hyperion.config.spec.BorderSide;
|
||||||
|
import org.hyperion.config.spec.ImageProcessConfig;
|
||||||
import org.hyperion.config.spec.Led;
|
import org.hyperion.config.spec.Led;
|
||||||
import org.hyperion.config.spec.LedFrameConstruction;
|
import org.hyperion.config.spec.LedFrameConstruction;
|
||||||
|
|
||||||
@ -22,9 +23,7 @@ public class LedFrameFactory {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Vector<Led> construct(LedFrameConstruction frameSpec) {
|
public static Vector<Led> construct(LedFrameConstruction frameSpec, ImageProcessConfig processConfig) {
|
||||||
double overlap_frac = 0.50;
|
|
||||||
|
|
||||||
Vector<Led> mLeds = new Vector<>();
|
Vector<Led> mLeds = new Vector<>();
|
||||||
|
|
||||||
int totalLedCount = frameSpec.getLedCount();
|
int totalLedCount = frameSpec.getLedCount();
|
||||||
@ -37,7 +36,7 @@ public class LedFrameFactory {
|
|||||||
iLed += totalLedCount;
|
iLed += totalLedCount;
|
||||||
}
|
}
|
||||||
if (frameSpec.topLeftCorner) {
|
if (frameSpec.topLeftCorner) {
|
||||||
mLeds.add(createLed(frameSpec, iLed, 0.0, 0.0, overlap_frac, BorderSide.top_left));
|
mLeds.add(createLed(frameSpec, processConfig, iLed, 0.0, 0.0, processConfig.overlapFraction, BorderSide.top_left));
|
||||||
iLed = increase(frameSpec, iLed);
|
iLed = increase(frameSpec, iLed);
|
||||||
}
|
}
|
||||||
if (frameSpec.topLedCnt > 0) {
|
if (frameSpec.topLedCnt > 0) {
|
||||||
@ -47,12 +46,12 @@ public class LedFrameFactory {
|
|||||||
double led_x = ledSpacing/2.0 + iTop * ledSpacing;
|
double led_x = ledSpacing/2.0 + iTop * ledSpacing;
|
||||||
double led_y = 0;
|
double led_y = 0;
|
||||||
|
|
||||||
mLeds.add(createLed(frameSpec, iLed, led_x, led_y, overlap_frac, BorderSide.top));
|
mLeds.add(createLed(frameSpec, processConfig, iLed, led_x, led_y, processConfig.overlapFraction, BorderSide.top));
|
||||||
iLed = increase(frameSpec, iLed);
|
iLed = increase(frameSpec, iLed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (frameSpec.topRightCorner) {
|
if (frameSpec.topRightCorner) {
|
||||||
mLeds.add(createLed(frameSpec, iLed, 1.0, 0.0, overlap_frac, BorderSide.top_right));
|
mLeds.add(createLed(frameSpec, processConfig, iLed, 1.0, 0.0, processConfig.overlapFraction, BorderSide.top_right));
|
||||||
iLed = increase(frameSpec, iLed);
|
iLed = increase(frameSpec, iLed);
|
||||||
}
|
}
|
||||||
if (frameSpec.rightLedCnt > 0) {
|
if (frameSpec.rightLedCnt > 0) {
|
||||||
@ -62,12 +61,12 @@ public class LedFrameFactory {
|
|||||||
double led_x = 1.0;
|
double led_x = 1.0;
|
||||||
double led_y = ledSpacing/2.0 + iRight * ledSpacing;
|
double led_y = ledSpacing/2.0 + iRight * ledSpacing;
|
||||||
|
|
||||||
mLeds.add(createLed(frameSpec, iLed, led_x, led_y, overlap_frac, BorderSide.right));
|
mLeds.add(createLed(frameSpec, processConfig, iLed, led_x, led_y, processConfig.overlapFraction, BorderSide.right));
|
||||||
iLed = increase(frameSpec, iLed);
|
iLed = increase(frameSpec, iLed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (frameSpec.bottomRightCorner) {
|
if (frameSpec.bottomRightCorner) {
|
||||||
mLeds.add(createLed(frameSpec, iLed, 1.0, 1.0, overlap_frac, BorderSide.bottom_right));
|
mLeds.add(createLed(frameSpec, processConfig, iLed, 1.0, 1.0, processConfig.overlapFraction, BorderSide.bottom_right));
|
||||||
iLed = increase(frameSpec, iLed);
|
iLed = increase(frameSpec, iLed);
|
||||||
}
|
}
|
||||||
if (frameSpec.bottomLedCnt > 0) {
|
if (frameSpec.bottomLedCnt > 0) {
|
||||||
@ -81,12 +80,12 @@ public class LedFrameFactory {
|
|||||||
double led_x = ledSpacing/2.0 + iBottom * ledSpacing;
|
double led_x = ledSpacing/2.0 + iBottom * ledSpacing;
|
||||||
double led_y = 1.0;
|
double led_y = 1.0;
|
||||||
|
|
||||||
mLeds.add(createLed(frameSpec, iLed, led_x, led_y, overlap_frac, BorderSide.bottom));
|
mLeds.add(createLed(frameSpec, processConfig, iLed, led_x, led_y, processConfig.overlapFraction, BorderSide.bottom));
|
||||||
iLed = increase(frameSpec, iLed);
|
iLed = increase(frameSpec, iLed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (frameSpec.bottomLeftCorner) {
|
if (frameSpec.bottomLeftCorner) {
|
||||||
mLeds.add(createLed(frameSpec, iLed, 0.0, 1.0, overlap_frac, BorderSide.bottom_left));
|
mLeds.add(createLed(frameSpec, processConfig, iLed, 0.0, 1.0, processConfig.overlapFraction, BorderSide.bottom_left));
|
||||||
iLed = increase(frameSpec, iLed);
|
iLed = increase(frameSpec, iLed);
|
||||||
}
|
}
|
||||||
if (frameSpec.leftLedCnt > 0) {
|
if (frameSpec.leftLedCnt > 0) {
|
||||||
@ -96,7 +95,7 @@ public class LedFrameFactory {
|
|||||||
double led_x = 0.0;
|
double led_x = 0.0;
|
||||||
double led_y = ledSpacing/2.0 + iRight * ledSpacing;
|
double led_y = ledSpacing/2.0 + iRight * ledSpacing;
|
||||||
|
|
||||||
mLeds.add(createLed(frameSpec, iLed, led_x, led_y, overlap_frac, BorderSide.left));
|
mLeds.add(createLed(frameSpec, processConfig, iLed, led_x, led_y, processConfig.overlapFraction, BorderSide.left));
|
||||||
iLed = increase(frameSpec, iLed);
|
iLed = increase(frameSpec, iLed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -104,36 +103,36 @@ public class LedFrameFactory {
|
|||||||
return mLeds;
|
return mLeds;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Led createLed(LedFrameConstruction frameSpec, int seqNr, double x_frac, double y_frac, double overlap_frac, BorderSide pBorderSide) {
|
private static Led createLed(LedFrameConstruction pFrameSpec, ImageProcessConfig pProcessSpec, int seqNr, double x_frac, double y_frac, double overlap_frac, BorderSide pBorderSide) {
|
||||||
Led led = new Led();
|
Led led = new Led();
|
||||||
led.mLedSeqNr = seqNr;
|
led.mLedSeqNr = seqNr;
|
||||||
led.mLocation = new Point2D.Double(x_frac, y_frac);
|
led.mLocation = new Point2D.Double(x_frac, y_frac);
|
||||||
led.mSide = pBorderSide;
|
led.mSide = pBorderSide;
|
||||||
|
|
||||||
double widthFrac = (1.0/frameSpec.topLedCnt * (1.0 + overlap_frac))/2.0;
|
double widthFrac = (1.0/pFrameSpec.topLedCnt * (1.0 + overlap_frac))/2.0;
|
||||||
double heightFrac = (1.0/frameSpec.leftLedCnt * (1.0 + overlap_frac))/2.0;
|
double heightFrac = (1.0/pFrameSpec.leftLedCnt * (1.0 + overlap_frac))/2.0;
|
||||||
|
|
||||||
switch (pBorderSide) {
|
switch (pBorderSide) {
|
||||||
case top_left: {
|
case top_left: {
|
||||||
led.mImageRectangle = new Rectangle2D.Double(0.0, 0.0, frameSpec.verticalDepth, frameSpec.horizontalDepth);
|
led.mImageRectangle = new Rectangle2D.Double(0.0, 0.0, pProcessSpec.verticalDepth, pProcessSpec.horizontalDepth);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case top_right: {
|
case top_right: {
|
||||||
led.mImageRectangle = new Rectangle2D.Double(1.0-frameSpec.verticalDepth, 0.0, frameSpec.verticalDepth, frameSpec.horizontalDepth);
|
led.mImageRectangle = new Rectangle2D.Double(1.0-pProcessSpec.verticalDepth, 0.0, pProcessSpec.verticalDepth, pProcessSpec.horizontalDepth);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case bottom_left: {
|
case bottom_left: {
|
||||||
led.mImageRectangle = new Rectangle2D.Double(0.0, 1.0-frameSpec.horizontalDepth, frameSpec.verticalDepth, frameSpec.horizontalDepth);
|
led.mImageRectangle = new Rectangle2D.Double(0.0, 1.0-pProcessSpec.horizontalDepth, pProcessSpec.verticalDepth, pProcessSpec.horizontalDepth);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case bottom_right: {
|
case bottom_right: {
|
||||||
led.mImageRectangle = new Rectangle2D.Double(1.0-frameSpec.verticalDepth, 1.0-frameSpec.horizontalDepth, frameSpec.verticalDepth, frameSpec.horizontalDepth);
|
led.mImageRectangle = new Rectangle2D.Double(1.0-pProcessSpec.verticalDepth, 1.0-pProcessSpec.horizontalDepth, pProcessSpec.verticalDepth, pProcessSpec.horizontalDepth);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case top:{
|
case top:{
|
||||||
double intXmin_frac = Math.max(0.0, x_frac-widthFrac);
|
double intXmin_frac = Math.max(0.0, x_frac-widthFrac);
|
||||||
double intXmax_frac = Math.min(x_frac+widthFrac, 1.0);
|
double intXmax_frac = Math.min(x_frac+widthFrac, 1.0);
|
||||||
led.mImageRectangle = new Rectangle2D.Double(intXmin_frac, 0.0, intXmax_frac-intXmin_frac, frameSpec.horizontalDepth);
|
led.mImageRectangle = new Rectangle2D.Double(intXmin_frac, 0.0, intXmax_frac-intXmin_frac, pProcessSpec.horizontalDepth);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -142,19 +141,19 @@ public class LedFrameFactory {
|
|||||||
double intXmin_frac = Math.max(0.0, x_frac-widthFrac);
|
double intXmin_frac = Math.max(0.0, x_frac-widthFrac);
|
||||||
double intXmax_frac = Math.min(x_frac+widthFrac, 1.0);
|
double intXmax_frac = Math.min(x_frac+widthFrac, 1.0);
|
||||||
|
|
||||||
led.mImageRectangle = new Rectangle2D.Double(intXmin_frac, 1.0-frameSpec.horizontalDepth, intXmax_frac-intXmin_frac, frameSpec.horizontalDepth);
|
led.mImageRectangle = new Rectangle2D.Double(intXmin_frac, 1.0-pProcessSpec.horizontalDepth, intXmax_frac-intXmin_frac, pProcessSpec.horizontalDepth);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case left: {
|
case left: {
|
||||||
double intYmin_frac = Math.max(0.0, y_frac-heightFrac);
|
double intYmin_frac = Math.max(0.0, y_frac-heightFrac);
|
||||||
double intYmax_frac = Math.min(y_frac+heightFrac, 1.0);
|
double intYmax_frac = Math.min(y_frac+heightFrac, 1.0);
|
||||||
led.mImageRectangle = new Rectangle2D.Double(0.0, intYmin_frac, frameSpec.verticalDepth, intYmax_frac-intYmin_frac);
|
led.mImageRectangle = new Rectangle2D.Double(0.0, intYmin_frac, pProcessSpec.verticalDepth, intYmax_frac-intYmin_frac);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case right:
|
case right:
|
||||||
double intYmin_frac = Math.max(0.0, y_frac-heightFrac);
|
double intYmin_frac = Math.max(0.0, y_frac-heightFrac);
|
||||||
double intYmax_frac = Math.min(y_frac+heightFrac, 1.0);
|
double intYmax_frac = Math.min(y_frac+heightFrac, 1.0);
|
||||||
led.mImageRectangle = new Rectangle2D.Double(1.0-frameSpec.verticalDepth, intYmin_frac, frameSpec.verticalDepth, intYmax_frac-intYmin_frac);
|
led.mImageRectangle = new Rectangle2D.Double(1.0-pProcessSpec.verticalDepth, intYmin_frac, pProcessSpec.verticalDepth, intYmax_frac-intYmin_frac);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,21 +7,29 @@ import java.util.Vector;
|
|||||||
|
|
||||||
import org.hyperion.config.spec.ColorConfig;
|
import org.hyperion.config.spec.ColorConfig;
|
||||||
import org.hyperion.config.spec.DeviceConfig;
|
import org.hyperion.config.spec.DeviceConfig;
|
||||||
|
import org.hyperion.config.spec.ImageProcessConfig;
|
||||||
import org.hyperion.config.spec.Led;
|
import org.hyperion.config.spec.Led;
|
||||||
|
import org.hyperion.config.spec.LedFrameConstruction;
|
||||||
import org.hyperion.config.spec.MiscConfig;
|
import org.hyperion.config.spec.MiscConfig;
|
||||||
|
|
||||||
public class LedString {
|
public class LedString {
|
||||||
/** The individual led configuration */
|
|
||||||
public Vector<Led> leds;
|
|
||||||
|
|
||||||
/** The configuration of the output device */
|
/** The configuration of the output device */
|
||||||
DeviceConfig mDeviceConfig = new DeviceConfig();
|
public DeviceConfig mDeviceConfig = new DeviceConfig();
|
||||||
|
|
||||||
|
/** THe configuration of the 'physical' led frame */
|
||||||
|
public LedFrameConstruction mLedFrameConfig = new LedFrameConstruction();
|
||||||
|
/** The configuration of the image processing */
|
||||||
|
public ImageProcessConfig mProcessConfig = new ImageProcessConfig();
|
||||||
|
|
||||||
/** The color adjustment configuration */
|
/** The color adjustment configuration */
|
||||||
ColorConfig mColorConfig = new ColorConfig();
|
public ColorConfig mColorConfig = new ColorConfig();
|
||||||
|
|
||||||
/** The miscellaneous configuration (bootsequence, blackborder detector, etc) */
|
/** The miscellaneous configuration (bootsequence, blackborder detector, etc) */
|
||||||
MiscConfig mMiscConfig = new MiscConfig();
|
public MiscConfig mMiscConfig = new MiscConfig();
|
||||||
|
|
||||||
|
/** The translation of the led frame construction and image processing to individual led configuration */
|
||||||
|
public Vector<Led> leds;
|
||||||
|
|
||||||
public void saveConfigFile(String mFilename) throws IOException {
|
public void saveConfigFile(String mFilename) throws IOException {
|
||||||
|
|
||||||
|
@ -11,32 +11,24 @@ import javax.swing.AbstractAction;
|
|||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.BorderFactory;
|
||||||
import javax.swing.BoxLayout;
|
import javax.swing.BoxLayout;
|
||||||
import javax.swing.GroupLayout;
|
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JFileChooser;
|
import javax.swing.JFileChooser;
|
||||||
import javax.swing.JLabel;
|
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JSpinner;
|
|
||||||
import javax.swing.SpinnerNumberModel;
|
|
||||||
import javax.swing.event.ChangeEvent;
|
|
||||||
import javax.swing.event.ChangeListener;
|
|
||||||
|
|
||||||
import org.hyperion.config.LedFrameFactory;
|
import org.hyperion.config.LedFrameFactory;
|
||||||
import org.hyperion.config.LedString;
|
import org.hyperion.config.LedString;
|
||||||
import org.hyperion.config.spec.LedFrameConstruction;
|
|
||||||
|
|
||||||
public class ConfigPanel extends JPanel {
|
public class ConfigPanel extends JPanel {
|
||||||
|
|
||||||
private final LedFrameConstruction mLedFrameSpec = new LedFrameConstruction();
|
private final LedString ledString = new LedString();
|
||||||
|
|
||||||
private final Action mSaveConfigAction = new AbstractAction("Create Hyperion Configuration") {
|
private final Action mSaveConfigAction = new AbstractAction("Create Hyperion Configuration") {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
JFileChooser fileChooser = new JFileChooser();
|
JFileChooser fileChooser = new JFileChooser();
|
||||||
fileChooser.showSaveDialog(ConfigPanel.this);
|
if (fileChooser.showSaveDialog(ConfigPanel.this) != JFileChooser.APPROVE_OPTION) {
|
||||||
|
return;
|
||||||
LedString ledString = new LedString();
|
}
|
||||||
ledString.leds = LedFrameFactory.construct(mLedFrameSpec);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ledString.saveConfigFile(fileChooser.getSelectedFile().getAbsolutePath());
|
ledString.saveConfigFile(fileChooser.getSelectedFile().getAbsolutePath());
|
||||||
@ -54,11 +46,6 @@ public class ConfigPanel extends JPanel {
|
|||||||
|
|
||||||
private JPanel mIntegrationPanel;
|
private JPanel mIntegrationPanel;
|
||||||
|
|
||||||
private JLabel mHorizontalDepthLabel;
|
|
||||||
private JSpinner mHorizontalDepthSpinner;
|
|
||||||
private JLabel mVerticalDepthLabel;
|
|
||||||
private JSpinner mVerticalDepthSpinner;
|
|
||||||
|
|
||||||
private JPanel mSpecificationPanel;
|
private JPanel mSpecificationPanel;
|
||||||
|
|
||||||
private MiscConfigPanel mMiscPanel;
|
private MiscConfigPanel mMiscPanel;
|
||||||
@ -68,30 +55,21 @@ public class ConfigPanel extends JPanel {
|
|||||||
public ConfigPanel() {
|
public ConfigPanel() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
mLedFrameSpec.clockwiseDirection = true;
|
|
||||||
|
|
||||||
mLedFrameSpec.topLeftCorner = true;
|
|
||||||
mLedFrameSpec.topRightCorner= true;
|
|
||||||
mLedFrameSpec.bottomLeftCorner= true;
|
|
||||||
mLedFrameSpec.bottomRightCorner= true;
|
|
||||||
|
|
||||||
mLedFrameSpec.topLedCnt = 16;
|
|
||||||
mLedFrameSpec.bottomLedCnt = 16;
|
|
||||||
mLedFrameSpec.leftLedCnt = 7;
|
|
||||||
mLedFrameSpec.rightLedCnt = 7;
|
|
||||||
|
|
||||||
mLedFrameSpec.firstLedOffset = 0;
|
|
||||||
|
|
||||||
initialise();
|
initialise();
|
||||||
|
|
||||||
mHyperionTv.setLeds(LedFrameFactory.construct(mLedFrameSpec));
|
ledString.leds = LedFrameFactory.construct(ledString.mLedFrameConfig, ledString.mProcessConfig);
|
||||||
mLedFrameSpec.addObserver(new Observer() {
|
mHyperionTv.setLeds(ledString.leds);
|
||||||
|
|
||||||
|
final Observer observer = new Observer() {
|
||||||
@Override
|
@Override
|
||||||
public void update(Observable o, Object arg) {
|
public void update(Observable o, Object arg) {
|
||||||
mHyperionTv.setLeds(LedFrameFactory.construct(mLedFrameSpec));
|
ledString.leds = LedFrameFactory.construct(ledString.mLedFrameConfig, ledString.mProcessConfig);
|
||||||
|
mHyperionTv.setLeds(ledString.leds);
|
||||||
mHyperionTv.repaint();
|
mHyperionTv.repaint();
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
ledString.mLedFrameConfig.addObserver(observer);
|
||||||
|
ledString.mProcessConfig.addObserver(observer);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initialise() {
|
private void initialise() {
|
||||||
@ -119,13 +97,15 @@ public class ConfigPanel extends JPanel {
|
|||||||
mSpecificationPanel.setPreferredSize(new Dimension(300, 200));
|
mSpecificationPanel.setPreferredSize(new Dimension(300, 200));
|
||||||
mSpecificationPanel.setLayout(new BoxLayout(mSpecificationPanel, BoxLayout.Y_AXIS));
|
mSpecificationPanel.setLayout(new BoxLayout(mSpecificationPanel, BoxLayout.Y_AXIS));
|
||||||
|
|
||||||
mConstructionPanel = new LedFramePanel(mLedFrameSpec);
|
mConstructionPanel = new LedFramePanel(ledString.mLedFrameConfig);
|
||||||
mConstructionPanel.setBorder(BorderFactory.createTitledBorder("Construction"));
|
mConstructionPanel.setBorder(BorderFactory.createTitledBorder("Construction"));
|
||||||
mSpecificationPanel.add(mConstructionPanel);
|
mSpecificationPanel.add(mConstructionPanel);
|
||||||
|
|
||||||
mSpecificationPanel.add(getIntegrationPanel());
|
mIntegrationPanel = new ImageProcessPanel(ledString.mProcessConfig);
|
||||||
|
mIntegrationPanel.setBorder(BorderFactory.createTitledBorder("Image Process"));
|
||||||
|
mSpecificationPanel.add(mIntegrationPanel);
|
||||||
|
|
||||||
mMiscPanel = new MiscConfigPanel();
|
mMiscPanel = new MiscConfigPanel(ledString.mMiscConfig);
|
||||||
mMiscPanel.setBorder(BorderFactory.createTitledBorder("Misc"));
|
mMiscPanel.setBorder(BorderFactory.createTitledBorder("Misc"));
|
||||||
mSpecificationPanel.add(mMiscPanel);
|
mSpecificationPanel.add(mMiscPanel);
|
||||||
|
|
||||||
@ -137,70 +117,4 @@ public class ConfigPanel extends JPanel {
|
|||||||
}
|
}
|
||||||
return mSpecificationPanel;
|
return mSpecificationPanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
private JPanel getIntegrationPanel() {
|
|
||||||
if (mIntegrationPanel == null) {
|
|
||||||
mIntegrationPanel = new JPanel();
|
|
||||||
mIntegrationPanel.setBorder(BorderFactory.createTitledBorder("Image Process"));
|
|
||||||
|
|
||||||
mHorizontalDepthLabel = new JLabel("Horizontal depth:");
|
|
||||||
mHorizontalDepthLabel.setPreferredSize(new Dimension(100, 30));
|
|
||||||
mHorizontalDepthLabel.setMaximumSize(new Dimension(150, 30));
|
|
||||||
mIntegrationPanel.add(mHorizontalDepthLabel);
|
|
||||||
|
|
||||||
mHorizontalDepthSpinner = new JSpinner(new SpinnerNumberModel(0.05, 0.01, 1.0, 0.01));
|
|
||||||
mHorizontalDepthSpinner.setPreferredSize(new Dimension(150, 30));
|
|
||||||
mHorizontalDepthSpinner.setMaximumSize(new Dimension(250, 30));
|
|
||||||
mHorizontalDepthSpinner.addChangeListener(mChangeListener);
|
|
||||||
mIntegrationPanel.add(mHorizontalDepthSpinner);
|
|
||||||
|
|
||||||
mVerticalDepthLabel = new JLabel("Vertical depth:");
|
|
||||||
mVerticalDepthLabel.setPreferredSize(new Dimension(100, 30));
|
|
||||||
mVerticalDepthLabel.setMaximumSize(new Dimension(150, 30));
|
|
||||||
mIntegrationPanel.add(mVerticalDepthLabel);
|
|
||||||
|
|
||||||
mVerticalDepthSpinner = new JSpinner(new SpinnerNumberModel(0.05, 0.01, 1.0, 0.01));
|
|
||||||
mVerticalDepthSpinner.setPreferredSize(new Dimension(150, 30));
|
|
||||||
mVerticalDepthSpinner.setMaximumSize(new Dimension(250, 30));
|
|
||||||
mVerticalDepthSpinner.addChangeListener(mChangeListener);
|
|
||||||
mIntegrationPanel.add(mVerticalDepthSpinner);
|
|
||||||
|
|
||||||
GroupLayout layout = new GroupLayout(mIntegrationPanel);
|
|
||||||
mIntegrationPanel.setLayout(layout);
|
|
||||||
|
|
||||||
layout.setHorizontalGroup(layout.createSequentialGroup()
|
|
||||||
.addGroup(layout.createParallelGroup()
|
|
||||||
.addComponent(mHorizontalDepthLabel)
|
|
||||||
.addComponent(mVerticalDepthLabel)
|
|
||||||
)
|
|
||||||
.addGroup(layout.createParallelGroup()
|
|
||||||
.addComponent(mHorizontalDepthSpinner)
|
|
||||||
.addComponent(mVerticalDepthSpinner)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
layout.setVerticalGroup(layout.createSequentialGroup()
|
|
||||||
.addGroup(layout.createParallelGroup()
|
|
||||||
.addComponent(mHorizontalDepthLabel)
|
|
||||||
.addComponent(mHorizontalDepthSpinner)
|
|
||||||
)
|
|
||||||
.addGroup(layout.createParallelGroup()
|
|
||||||
.addComponent(mVerticalDepthLabel)
|
|
||||||
.addComponent(mVerticalDepthSpinner)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
return mIntegrationPanel;
|
|
||||||
}
|
|
||||||
|
|
||||||
private final ChangeListener mChangeListener = new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
mLedFrameSpec.horizontalDepth = (Double)mHorizontalDepthSpinner.getValue();
|
|
||||||
mLedFrameSpec.verticalDepth = (Double)mVerticalDepthSpinner.getValue();
|
|
||||||
|
|
||||||
mLedFrameSpec.setChanged();
|
|
||||||
mLedFrameSpec.notifyObservers();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,151 @@
|
|||||||
|
package org.hyperion.config.gui;
|
||||||
|
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.util.Observable;
|
||||||
|
import java.util.Observer;
|
||||||
|
|
||||||
|
import javax.swing.GroupLayout;
|
||||||
|
import javax.swing.JComboBox;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JSpinner;
|
||||||
|
import javax.swing.SpinnerNumberModel;
|
||||||
|
import javax.swing.event.ChangeEvent;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
|
|
||||||
|
import org.hyperion.config.spec.ImageProcessConfig;
|
||||||
|
|
||||||
|
public class ImageProcessPanel extends JPanel implements Observer {
|
||||||
|
|
||||||
|
private final ImageProcessConfig mProcessConfig;
|
||||||
|
|
||||||
|
private JLabel mHorizontalDepthLabel;
|
||||||
|
private JSpinner mHorizontalDepthSpinner;
|
||||||
|
private JLabel mVerticalDepthLabel;
|
||||||
|
private JSpinner mVerticalDepthSpinner;
|
||||||
|
|
||||||
|
private JLabel mOverlapLabel;
|
||||||
|
private JSpinner mOverlapSpinner;
|
||||||
|
|
||||||
|
private JLabel mBlackborderDetectorLabel;
|
||||||
|
private JComboBox<String> mBlackborderDetectorCombo;
|
||||||
|
|
||||||
|
public ImageProcessPanel(ImageProcessConfig pProcessConfig) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
mProcessConfig = pProcessConfig;
|
||||||
|
|
||||||
|
initialise();
|
||||||
|
|
||||||
|
update(mProcessConfig, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initialise() {
|
||||||
|
mHorizontalDepthLabel = new JLabel("Horizontal depth [%]:");
|
||||||
|
mHorizontalDepthLabel.setPreferredSize(new Dimension(100, 30));
|
||||||
|
mHorizontalDepthLabel.setMaximumSize(new Dimension(150, 30));
|
||||||
|
add(mHorizontalDepthLabel);
|
||||||
|
|
||||||
|
mHorizontalDepthSpinner = new JSpinner(new SpinnerNumberModel(5.0, 1.0, 100.0, 1.0));
|
||||||
|
mHorizontalDepthSpinner.setPreferredSize(new Dimension(150, 30));
|
||||||
|
mHorizontalDepthSpinner.setMaximumSize(new Dimension(250, 30));
|
||||||
|
mHorizontalDepthSpinner.addChangeListener(mChangeListener);
|
||||||
|
add(mHorizontalDepthSpinner);
|
||||||
|
|
||||||
|
mVerticalDepthLabel = new JLabel("Vertical depth [%]:");
|
||||||
|
mVerticalDepthLabel.setPreferredSize(new Dimension(100, 30));
|
||||||
|
mVerticalDepthLabel.setMaximumSize(new Dimension(150, 30));
|
||||||
|
add(mVerticalDepthLabel);
|
||||||
|
|
||||||
|
mVerticalDepthSpinner = new JSpinner(new SpinnerNumberModel(5.0, 1.0, 100.0, 1.0));
|
||||||
|
mVerticalDepthSpinner.setPreferredSize(new Dimension(150, 30));
|
||||||
|
mVerticalDepthSpinner.setMaximumSize(new Dimension(250, 30));
|
||||||
|
mVerticalDepthSpinner.addChangeListener(mChangeListener);
|
||||||
|
add(mVerticalDepthSpinner);
|
||||||
|
|
||||||
|
mOverlapLabel = new JLabel("Overlap [%]:");
|
||||||
|
mOverlapLabel.setPreferredSize(new Dimension(100, 30));
|
||||||
|
mOverlapLabel.setMaximumSize(new Dimension(150, 30));
|
||||||
|
add(mOverlapLabel);
|
||||||
|
|
||||||
|
mOverlapSpinner = new JSpinner(new SpinnerNumberModel(0.0, -100.0, 100.0, 1.0));
|
||||||
|
mOverlapSpinner.setPreferredSize(new Dimension(150, 30));
|
||||||
|
mOverlapSpinner.setMaximumSize(new Dimension(250, 30));
|
||||||
|
mOverlapSpinner.addChangeListener(mChangeListener);
|
||||||
|
add(mOverlapSpinner);
|
||||||
|
|
||||||
|
mBlackborderDetectorLabel = new JLabel("Blackborder Detector:");
|
||||||
|
add(mBlackborderDetectorLabel);
|
||||||
|
|
||||||
|
mBlackborderDetectorCombo = new JComboBox<>(new String[] {"On", "Off"});
|
||||||
|
mBlackborderDetectorCombo.setSelectedItem("On");
|
||||||
|
mBlackborderDetectorCombo.setToolTipText("Enables or disables the blackborder detection and removal");
|
||||||
|
mBlackborderDetectorCombo.addActionListener(mActionListener);
|
||||||
|
add(mBlackborderDetectorCombo);
|
||||||
|
|
||||||
|
GroupLayout layout = new GroupLayout(this);
|
||||||
|
layout.setAutoCreateGaps(true);
|
||||||
|
setLayout(layout);
|
||||||
|
|
||||||
|
layout.setHorizontalGroup(layout.createSequentialGroup()
|
||||||
|
.addGroup(layout.createParallelGroup()
|
||||||
|
.addComponent(mHorizontalDepthLabel)
|
||||||
|
.addComponent(mVerticalDepthLabel)
|
||||||
|
.addComponent(mOverlapLabel)
|
||||||
|
.addComponent(mBlackborderDetectorLabel)
|
||||||
|
)
|
||||||
|
.addGroup(layout.createParallelGroup()
|
||||||
|
.addComponent(mHorizontalDepthSpinner)
|
||||||
|
.addComponent(mVerticalDepthSpinner)
|
||||||
|
.addComponent(mOverlapSpinner)
|
||||||
|
.addComponent(mBlackborderDetectorCombo)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
layout.setVerticalGroup(layout.createSequentialGroup()
|
||||||
|
.addGroup(layout.createParallelGroup()
|
||||||
|
.addComponent(mHorizontalDepthLabel)
|
||||||
|
.addComponent(mHorizontalDepthSpinner)
|
||||||
|
)
|
||||||
|
.addGroup(layout.createParallelGroup()
|
||||||
|
.addComponent(mVerticalDepthLabel)
|
||||||
|
.addComponent(mVerticalDepthSpinner)
|
||||||
|
)
|
||||||
|
.addGroup(layout.createParallelGroup()
|
||||||
|
.addComponent(mOverlapLabel)
|
||||||
|
.addComponent(mOverlapSpinner)
|
||||||
|
)
|
||||||
|
.addGroup(layout.createParallelGroup()
|
||||||
|
.addComponent(mBlackborderDetectorLabel)
|
||||||
|
.addComponent(mBlackborderDetectorCombo)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Observable pObs, Object pArg) {
|
||||||
|
if (pObs == mProcessConfig && pArg != this) {
|
||||||
|
mHorizontalDepthSpinner.setValue(mProcessConfig.horizontalDepth * 100.0);
|
||||||
|
mVerticalDepthSpinner.setValue(mProcessConfig.verticalDepth * 100.0);
|
||||||
|
mOverlapSpinner.setValue(mProcessConfig.overlapFraction * 100.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private final ActionListener mActionListener = new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
mProcessConfig.blackBorderRemoval = (mBlackborderDetectorCombo.getSelectedItem() == "On");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
private final ChangeListener mChangeListener = new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
mProcessConfig.horizontalDepth = ((Double)mHorizontalDepthSpinner.getValue())/100.0;
|
||||||
|
mProcessConfig.verticalDepth = ((Double)mVerticalDepthSpinner.getValue())/100.0;
|
||||||
|
mProcessConfig.overlapFraction = ((Double)mOverlapSpinner.getValue())/100.0;
|
||||||
|
|
||||||
|
mProcessConfig.setChanged();
|
||||||
|
mProcessConfig.notifyObservers(this);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
@ -26,6 +26,7 @@ import javax.swing.JFileChooser;
|
|||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JMenu;
|
import javax.swing.JMenu;
|
||||||
import javax.swing.JPopupMenu;
|
import javax.swing.JPopupMenu;
|
||||||
|
import javax.swing.SwingWorker;
|
||||||
|
|
||||||
import org.hyperion.config.spec.Led;
|
import org.hyperion.config.spec.Led;
|
||||||
|
|
||||||
@ -88,7 +89,7 @@ public class JHyperionTv extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private JPopupMenu getPopupMenu() {
|
private synchronized JPopupMenu getPopupMenu() {
|
||||||
if (mPopupMenu == null) {
|
if (mPopupMenu == null) {
|
||||||
mPopupMenu = new JPopupMenu();
|
mPopupMenu = new JPopupMenu();
|
||||||
mPopupMenu.add(mLoadAction);
|
mPopupMenu.add(mLoadAction);
|
||||||
@ -137,7 +138,12 @@ public class JHyperionTv extends Component {
|
|||||||
public JHyperionTv() {
|
public JHyperionTv() {
|
||||||
|
|
||||||
// Pre-cache the popup menu
|
// Pre-cache the popup menu
|
||||||
getPopupMenu();
|
new SwingWorker<Object, Object>() {
|
||||||
|
@Override
|
||||||
|
protected Object doInBackground() throws Exception {
|
||||||
|
return getPopupMenu();
|
||||||
|
}
|
||||||
|
}.execute();
|
||||||
|
|
||||||
addMouseMotionListener(new MouseMotionListener() {
|
addMouseMotionListener(new MouseMotionListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -9,9 +9,12 @@ import javax.swing.JLabel;
|
|||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
import org.hyperion.config.spec.BootSequence;
|
import org.hyperion.config.spec.BootSequence;
|
||||||
|
import org.hyperion.config.spec.MiscConfig;
|
||||||
|
|
||||||
public class MiscConfigPanel extends JPanel {
|
public class MiscConfigPanel extends JPanel {
|
||||||
|
|
||||||
|
private final MiscConfig mMiscConfig;
|
||||||
|
|
||||||
private JLabel mMenuLabel;
|
private JLabel mMenuLabel;
|
||||||
private JComboBox<String> mMenuCombo;
|
private JComboBox<String> mMenuCombo;
|
||||||
private JLabel mVideoLabel;
|
private JLabel mVideoLabel;
|
||||||
@ -21,14 +24,14 @@ public class MiscConfigPanel extends JPanel {
|
|||||||
private JLabel mAudioLabel;
|
private JLabel mAudioLabel;
|
||||||
private JComboBox<String> mAudioCombo;
|
private JComboBox<String> mAudioCombo;
|
||||||
|
|
||||||
private JLabel mBlackborderDetectorLabel;
|
|
||||||
private JComboBox<String> mBlackborderDetectorCombo;
|
|
||||||
private JLabel mBootSequenceLabel;
|
private JLabel mBootSequenceLabel;
|
||||||
private JComboBox<BootSequence> mBootSequenceCombo;
|
private JComboBox<BootSequence> mBootSequenceCombo;
|
||||||
|
|
||||||
public MiscConfigPanel() {
|
public MiscConfigPanel(MiscConfig pMiscConfig) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
mMiscConfig = pMiscConfig;
|
||||||
|
|
||||||
initialise();
|
initialise();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,14 +76,6 @@ public class MiscConfigPanel extends JPanel {
|
|||||||
mAudioCombo.addActionListener(mActionListener);
|
mAudioCombo.addActionListener(mActionListener);
|
||||||
add(mAudioCombo);
|
add(mAudioCombo);
|
||||||
|
|
||||||
mBlackborderDetectorLabel = new JLabel("Blackborder Detector:");
|
|
||||||
add(mBlackborderDetectorLabel);
|
|
||||||
|
|
||||||
mBlackborderDetectorCombo = new JComboBox<>(new String[] {"On", "Off"});
|
|
||||||
mBlackborderDetectorCombo.setSelectedItem("On");
|
|
||||||
mBlackborderDetectorCombo.setToolTipText("Enables or disables the blackborder detection and removal");
|
|
||||||
add(mBlackborderDetectorCombo);
|
|
||||||
|
|
||||||
mBootSequenceLabel = new JLabel("Boot Sequence:");
|
mBootSequenceLabel = new JLabel("Boot Sequence:");
|
||||||
add(mBootSequenceLabel);
|
add(mBootSequenceLabel);
|
||||||
|
|
||||||
@ -95,7 +90,6 @@ public class MiscConfigPanel extends JPanel {
|
|||||||
.addComponent(mVideoLabel)
|
.addComponent(mVideoLabel)
|
||||||
.addComponent(mPictureLabel)
|
.addComponent(mPictureLabel)
|
||||||
.addComponent(mAudioLabel)
|
.addComponent(mAudioLabel)
|
||||||
.addComponent(mBlackborderDetectorLabel)
|
|
||||||
.addComponent(mBootSequenceLabel)
|
.addComponent(mBootSequenceLabel)
|
||||||
)
|
)
|
||||||
.addGroup(layout.createParallelGroup()
|
.addGroup(layout.createParallelGroup()
|
||||||
@ -103,7 +97,6 @@ public class MiscConfigPanel extends JPanel {
|
|||||||
.addComponent(mVideoCombo)
|
.addComponent(mVideoCombo)
|
||||||
.addComponent(mPictureCombo)
|
.addComponent(mPictureCombo)
|
||||||
.addComponent(mAudioCombo)
|
.addComponent(mAudioCombo)
|
||||||
.addComponent(mBlackborderDetectorCombo)
|
|
||||||
.addComponent(mBootSequenceCombo)
|
.addComponent(mBootSequenceCombo)
|
||||||
));
|
));
|
||||||
layout.setVerticalGroup(layout.createSequentialGroup()
|
layout.setVerticalGroup(layout.createSequentialGroup()
|
||||||
@ -123,10 +116,6 @@ public class MiscConfigPanel extends JPanel {
|
|||||||
.addComponent(mAudioLabel)
|
.addComponent(mAudioLabel)
|
||||||
.addComponent(mAudioCombo)
|
.addComponent(mAudioCombo)
|
||||||
)
|
)
|
||||||
.addGroup(layout.createParallelGroup()
|
|
||||||
.addComponent(mBlackborderDetectorLabel)
|
|
||||||
.addComponent(mBlackborderDetectorCombo)
|
|
||||||
)
|
|
||||||
.addGroup(layout.createParallelGroup()
|
.addGroup(layout.createParallelGroup()
|
||||||
.addComponent(mBootSequenceLabel)
|
.addComponent(mBootSequenceLabel)
|
||||||
.addComponent(mBootSequenceCombo)
|
.addComponent(mBootSequenceCombo)
|
||||||
@ -136,7 +125,12 @@ public class MiscConfigPanel extends JPanel {
|
|||||||
private final ActionListener mActionListener = new ActionListener() {
|
private final ActionListener mActionListener = new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
mMiscConfig.mBootSequence = (BootSequence)mBootSequenceCombo.getSelectedItem();
|
||||||
|
|
||||||
|
mMiscConfig.mMenuOn = (mMenuCombo.getSelectedItem() == "On");
|
||||||
|
mMiscConfig.mVideoOn = (mVideoCombo.getSelectedItem() == "On");
|
||||||
|
mMiscConfig.mPictureOn = (mPictureCombo.getSelectedItem() == "On");
|
||||||
|
mMiscConfig.mAudioOn = (mAudioCombo.getSelectedItem() == "On");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package org.hyperion.config.spec;
|
||||||
|
|
||||||
|
import java.util.Observable;
|
||||||
|
|
||||||
|
public class ImageProcessConfig extends Observable {
|
||||||
|
|
||||||
|
/** The 'integration depth' of the leds along the horizontal axis of the tv */
|
||||||
|
public double horizontalDepth = 0.05;
|
||||||
|
/** The 'integration depth' of the leds along the vertical axis of the tv */
|
||||||
|
public double verticalDepth = 0.05;
|
||||||
|
|
||||||
|
/** The fraction of overlap from one to another led */
|
||||||
|
public double overlapFraction = 0.0;
|
||||||
|
|
||||||
|
public boolean blackBorderRemoval = true;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setChanged() {
|
||||||
|
super.setChanged();
|
||||||
|
}
|
||||||
|
}
|
@ -16,42 +16,39 @@ public class LedFrameConstruction extends Observable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** True if the leds are organised clockwise else false (counter clockwise) */
|
/** True if the leds are organised clockwise else false (counter clockwise) */
|
||||||
public boolean clockwiseDirection;
|
public boolean clockwiseDirection = true;
|
||||||
|
|
||||||
/** True if the top left corner has a led else false */
|
/** True if the top left corner has a led else false */
|
||||||
public boolean topLeftCorner;
|
public boolean topLeftCorner = true;
|
||||||
/** True if the top right corner has a led else false */
|
/** True if the top right corner has a led else false */
|
||||||
public boolean topRightCorner;
|
public boolean topRightCorner = true;
|
||||||
/** True if the bottom left corner has a led else false */
|
/** True if the bottom left corner has a led else false */
|
||||||
public boolean bottomLeftCorner;
|
public boolean bottomLeftCorner = true;
|
||||||
/** True if the bottom right corner has a led else false */
|
/** True if the bottom right corner has a led else false */
|
||||||
public boolean bottomRightCorner;
|
public boolean bottomRightCorner = true;
|
||||||
|
|
||||||
/** The number of leds between the top-left corner and the top-right corner of the screen
|
/** The number of leds between the top-left corner and the top-right corner of the screen
|
||||||
(excluding the corner leds) */
|
(excluding the corner leds) */
|
||||||
public int topLedCnt;
|
public int topLedCnt = 16;
|
||||||
/** The number of leds between the bottom-left corner and the bottom-right corner of the screen
|
/** The number of leds between the bottom-left corner and the bottom-right corner of the screen
|
||||||
(excluding the corner leds) */
|
(excluding the corner leds) */
|
||||||
public int bottomLedCnt;
|
public int bottomLedCnt = 16;
|
||||||
|
|
||||||
/** The number of leds between the top-left corner and the bottom-left corner of the screen
|
/** The number of leds between the top-left corner and the bottom-left corner of the screen
|
||||||
(excluding the corner leds) */
|
(excluding the corner leds) */
|
||||||
public int leftLedCnt;
|
public int leftLedCnt = 7;
|
||||||
/** The number of leds between the top-right corner and the bottom-right corner of the screen
|
/** The number of leds between the top-right corner and the bottom-right corner of the screen
|
||||||
(excluding the corner leds) */
|
(excluding the corner leds) */
|
||||||
public int rightLedCnt;
|
public int rightLedCnt = 7;
|
||||||
|
|
||||||
/** The offset (in leds) of the starting led counted clockwise from the top-left corner */
|
/** The offset (in leds) of the starting led counted clockwise from the top-left corner */
|
||||||
public int firstLedOffset;
|
public int firstLedOffset = -16;
|
||||||
|
|
||||||
/** The 'integration depth' of the leds along the horizontal axis of the tv */
|
|
||||||
public double horizontalDepth = 0.05;
|
|
||||||
/** The 'integration depth' of the leds along the vertical axis of the tv */
|
|
||||||
public double verticalDepth = 0.05;
|
|
||||||
|
|
||||||
/** The fraction of overlap from one to another led */
|
|
||||||
public double overlapFraction = 0.0;
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the total number of leds
|
||||||
|
*
|
||||||
|
* @return The total number of leds
|
||||||
|
*/
|
||||||
public int getLedCount() {
|
public int getLedCount() {
|
||||||
int cornerLedCnt = 0;
|
int cornerLedCnt = 0;
|
||||||
if (topLeftCorner) ++cornerLedCnt;
|
if (topLeftCorner) ++cornerLedCnt;
|
||||||
|
@ -4,18 +4,20 @@ import java.util.Locale;
|
|||||||
|
|
||||||
|
|
||||||
public class MiscConfig {
|
public class MiscConfig {
|
||||||
BootSequence mBootSequence = BootSequence.rainbow;
|
public BootSequence mBootSequence = BootSequence.rainbow;
|
||||||
int mBootSequenceLength_ms = 3000;
|
public int mBootSequenceLength_ms = 3000;
|
||||||
|
|
||||||
boolean mBlackborderDetector = true;
|
public int mFrameGrabberWidth = 64;
|
||||||
|
public int mFrameGrabberHeight = 64;
|
||||||
|
public int mFrameGrabberInterval_ms = 100;
|
||||||
|
|
||||||
int mFrameGrabberWidth = 64;
|
public boolean mXbmcChecker = true;
|
||||||
int mFrameGrabberHeight = 64;
|
public String mXbmcAddress = "127.0.0.1";
|
||||||
int mFrameGrabberInterval_ms = 100;
|
public int mXbmcTcpPort = 9090;
|
||||||
|
public boolean mVideoOn = true;
|
||||||
boolean mXbmcChecker = true;
|
public boolean mMenuOn = false;
|
||||||
String mXbmcAddress = "127.0.0.1";
|
public boolean mPictureOn = false;
|
||||||
int mXbmcTcpPort = 9090;
|
public boolean mAudioOn = false;
|
||||||
|
|
||||||
public String toJsonString() {
|
public String toJsonString() {
|
||||||
StringBuffer strBuf = new StringBuffer();
|
StringBuffer strBuf = new StringBuffer();
|
||||||
|
Loading…
Reference in New Issue
Block a user