com.jtattoo.plaf.aluminium.AluminiumUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of JTattoo Show documentation
Show all versions of JTattoo Show documentation
A LookAndFeel library for swing
/*
* Copyright (c) 2002 and later by MH Software-Entwicklung. All Rights Reserved.
*
* JTattoo is multiple licensed. If your are an open source developer you can use
* it under the terms and conditions of the GNU General Public License version 2.0
* or later as published by the Free Software Foundation.
*
* see: gpl-2.0.txt
*
* If you pay for a license you will become a registered user who could use the
* software under the terms and conditions of the GNU Lesser General Public License
* version 2.0 or later with classpath exception as published by the Free Software
* Foundation.
*
* see: lgpl-2.0.txt
* see: classpath-exception.txt
*
* Registered users could also use JTattoo under the terms and conditions of the
* Apache License, Version 2.0 as published by the Apache Software Foundation.
*
* see: APACHE-LICENSE-2.0.txt
*/
package com.jtattoo.plaf.aluminium;
import com.jtattoo.plaf.AbstractLookAndFeel;
import com.jtattoo.plaf.JTattooUtilities;
import com.jtattoo.plaf.LazyImageIcon;
import java.awt.*;
import java.awt.geom.Area;
import java.awt.geom.Rectangle2D;
import javax.swing.Icon;
/**
* @author Michael Hagen
*/
public class AluminiumUtils {
private static final Icon BG_IMAGE = new LazyImageIcon("aluminium/icons/background.jpg");
private static final Icon ALTER_BG_IMAGE = new LazyImageIcon("aluminium/icons/alterBackground.jpg");
private static Image backgroundImage = null;
private AluminiumUtils() {
}
public static void fillComponent(Graphics g, Component c) {
Graphics2D g2D = (Graphics2D)g;
int w = c.getWidth();
int h = c.getHeight();
if (AbstractLookAndFeel.getTheme().isBackgroundPatternOn()) {
// pattern
Point p = JTattooUtilities.getRelLocation(c);
Dimension d = JTattooUtilities.getFrameSize(c);
int y = -p.y;
if (JTattooUtilities.getJavaVersion() >= 1.6) {
int iw = BG_IMAGE.getIconWidth();
int ih = BG_IMAGE.getIconHeight();
while (y < h) {
int x = -p.x;
while (x < w) {
BG_IMAGE.paintIcon(c, g, x, y);
x += iw;
}
y += ih;
}
// higlight
if (backgroundImage == null
|| backgroundImage.getWidth(null) != d.width
|| backgroundImage.getHeight(null) != d.height) {
backgroundImage = c.createImage(d.width, d.height);
Graphics2D ig2D = (Graphics2D)backgroundImage.getGraphics();
Point pt1 = new Point(0, 0);
Point pt2 = new Point(d.width, 0);
float fractions[] = {0.0f, 0.5f, 1.0f };
Color c1 = new Color(220, 220, 220);
Color colors[] = {c1, Color.white, c1};
ig2D.setPaint(new LinearGradientPaint(pt1, pt2, fractions, colors));
ig2D.fillRect(0, 0, d.width, d.height);
ig2D.dispose();
}
Composite savedComposite = g2D.getComposite();
g2D.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.7f));
g2D.drawImage(backgroundImage, -p.x, 0, null);
g2D.setComposite(savedComposite);
} else {
int iw = ALTER_BG_IMAGE.getIconWidth();
int ih = ALTER_BG_IMAGE.getIconHeight();
while (y < h) {
int x = -p.x;
while (x < w) {
ALTER_BG_IMAGE.paintIcon(c, g, x, y);
x += iw;
}
y += ih;
}
}
} else {
g.setColor(c.getBackground());
g.fillRect(0, 0, w, h);
}
}
public static void fillComponent(Graphics g, Component c, int x, int y, int w, int h) {
Graphics2D g2D = (Graphics2D) g;
Shape savedClip = g2D.getClip();
Area clipArea = new Area(new Rectangle2D.Double(x, y, w, h));
if (savedClip != null) {
clipArea.intersect(new Area(savedClip));
}
g2D.setClip(clipArea);
fillComponent(g, c);
g2D.setClip(savedClip);
}
}