mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Added foreground image alignment functionality to FPanel.
This commit is contained in:
@@ -24,9 +24,12 @@ import java.awt.Image;
|
|||||||
import java.awt.RenderingHints;
|
import java.awt.RenderingHints;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import javax.swing.ImageIcon;
|
import javax.swing.ImageIcon;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.SwingConstants;
|
||||||
import javax.swing.border.Border;
|
import javax.swing.border.Border;
|
||||||
|
|
||||||
import forge.Command;
|
import forge.Command;
|
||||||
@@ -54,6 +57,7 @@ public class FPanel extends JPanel {
|
|||||||
private Color borderColor = FSkin.getColor(FSkin.Colors.CLR_BORDERS);
|
private Color borderColor = FSkin.getColor(FSkin.Colors.CLR_BORDERS);
|
||||||
private boolean borderToggle = true;
|
private boolean borderToggle = true;
|
||||||
private int cornerDiameter = 20;
|
private int cornerDiameter = 20;
|
||||||
|
private int foregroundAlign = SwingConstants.CENTER;
|
||||||
|
|
||||||
// Mouse handling
|
// Mouse handling
|
||||||
private boolean selected, hovered;
|
private boolean selected, hovered;
|
||||||
@@ -144,6 +148,24 @@ public class FPanel extends JPanel {
|
|||||||
setForegroundImage(ii0.getImage());
|
setForegroundImage(ii0.getImage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Aligns NON-STRETCHED foreground image.
|
||||||
|
* Must use SwingConstants.
|
||||||
|
* @param i0   int
|
||||||
|
*/
|
||||||
|
public void setForegroundAlign(final int i0) {
|
||||||
|
// Only implemented for BOTTOM at present.
|
||||||
|
// More implementations can be added as necessary.
|
||||||
|
// See drawForegroundScaled().
|
||||||
|
|
||||||
|
final List<Integer> implemented = new ArrayList<Integer>();
|
||||||
|
implemented.add(SwingConstants.BOTTOM);
|
||||||
|
implemented.add(SwingConstants.CENTER);
|
||||||
|
|
||||||
|
if (!implemented.contains(i0)) { throw new IllegalArgumentException(); }
|
||||||
|
this.foregroundAlign = i0;
|
||||||
|
implemented.clear();
|
||||||
|
}
|
||||||
|
|
||||||
/** @param bool0   boolean, stretch the foreground to fit */
|
/** @param bool0   boolean, stretch the foreground to fit */
|
||||||
public void setForegroundStretch(final boolean bool0) {
|
public void setForegroundStretch(final boolean bool0) {
|
||||||
this.foregroundStretch = bool0;
|
this.foregroundStretch = bool0;
|
||||||
@@ -268,8 +290,16 @@ public class FPanel extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Scaling step 3: Center image in panel
|
// Scaling step 3: Center image in panel
|
||||||
tempX = (int) ((pnlW - scaledW) / 2);
|
switch(this.foregroundAlign) {
|
||||||
tempY = (int) ((pnlH - scaledH) / 2);
|
case SwingConstants.BOTTOM:
|
||||||
|
tempX = (int) ((pnlW - scaledW) / 2);
|
||||||
|
tempY = pnlH - scaledH;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
tempX = (int) ((pnlW - scaledW) / 2);
|
||||||
|
tempY = (int) ((pnlH - scaledH) / 2);
|
||||||
|
}
|
||||||
|
|
||||||
g2d0.drawImage(foregroundImage, tempX, tempY, scaledW + tempX, scaledH + tempY, 0, 0, imgW, imgH, null);
|
g2d0.drawImage(foregroundImage, tempX, tempY, scaledW + tempX, scaledH + tempY, 0, 0, imgW, imgH, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user