com.jtattoo.plaf.texture.TextureUtils 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.texture;
import com.jtattoo.plaf.*;
import java.awt.*;
import java.awt.geom.Area;
import java.awt.geom.Rectangle2D;
import javax.swing.Icon;
import javax.swing.JComponent;
/**
* @author Michael Hagen
*/
public class TextureUtils {
public static final int WINDOW_TEXTURE_TYPE = 0;
public static final int BACKGROUND_TEXTURE_TYPE = 1;
public static final int ALTER_BACKGROUND_TEXTURE_TYPE = 2;
public static final int SELECTED_TEXTURE_TYPE = 3;
public static final int ROLLOVER_TEXTURE_TYPE = 4;
public static final int PRESSED_TEXTURE_TYPE = 5;
public static final int DISABLED_TEXTURE_TYPE = 6;
public static final int MENUBAR_TEXTURE_TYPE = 7;
public static final int LAST_TEXTURE_TYPE = 7;
public static final String WINDOW_TEXTURE_KEY = "WindowTexture";
public static final String BACKGROUND_TEXTURE_KEY = "BackgroundTexture";
public static final String ALTER_BACKGROUND_TEXTURE_KEY = "AlterBackgroundTexture";
public static final String SELECTED_TEXTURE_KEY = "SelectedTexture";
public static final String ROLLOVER_TEXTURE_KEY = "RolloverTexture";
public static final String PRESSED_TEXTURE_KEY = "PressedTexture";
public static final String DISABLED_TEXTURE_KEY = "DisabledTexture";
public static final String MENUBAR_TEXTURE_KEY = "MenubarTexture";
private static Icon windowTexture = null;
private static Icon backgroundTexture = null;
private static Icon alterBackgroundTexture = null;
private static Icon selectedTexture = null;
private static Icon rolloverTexture = null;
private static Icon pressedTexture = null;
private static Icon disabledTexture = null;
private static Icon menubarTexture = null;
private TextureUtils() {
}
public static void setUpTextures() {
String textureSet = "Default";
if (AbstractLookAndFeel.getTheme() != null) {
textureSet = AbstractLookAndFeel.getTheme().getTextureSet();
}
if (textureSet.startsWith("Rock")) {
windowTexture = new LazyImageIcon("texture/patterns/rock/window_texture.jpg");
backgroundTexture = new LazyImageIcon("texture/patterns/rock/background_texture.jpg");
alterBackgroundTexture = new LazyImageIcon("texture/patterns/rock/alter_background_texture.jpg");
selectedTexture = new LazyImageIcon("texture/patterns/rock/window_texture.jpg");
rolloverTexture = new LazyImageIcon("texture/patterns/rock/rollover_texture.jpg");
pressedTexture = new LazyImageIcon("texture/patterns/rock/pressed_texture.jpg");
disabledTexture = new LazyImageIcon("texture/patterns/rock/background_texture.jpg");
menubarTexture = new LazyImageIcon("texture/patterns/rock/menubar_texture.jpg");
} else if (textureSet.startsWith("Textile")) {
windowTexture = new LazyImageIcon("texture/patterns/textile/window_texture.jpg");
backgroundTexture = new LazyImageIcon("texture/patterns/textile/background_texture.jpg");
alterBackgroundTexture = new LazyImageIcon("texture/patterns/textile/alter_background_texture.jpg");
selectedTexture = new LazyImageIcon("texture/patterns/textile/window_texture.jpg");
rolloverTexture = new LazyImageIcon("texture/patterns/textile/rollover_texture.jpg");
pressedTexture = new LazyImageIcon("texture/patterns/textile/rollover_texture.jpg");
disabledTexture = new LazyImageIcon("texture/patterns/textile/background_texture.jpg");
menubarTexture = new LazyImageIcon("texture/patterns/textile/menubar_texture.jpg");
} else if (textureSet.startsWith("Snow")) {
windowTexture = new LazyImageIcon("texture/patterns/snow/window_texture.jpg");
backgroundTexture = new LazyImageIcon("texture/patterns/snow/background_texture.jpg");
alterBackgroundTexture = new LazyImageIcon("texture/patterns/snow/alter_background_texture.jpg");
selectedTexture = new LazyImageIcon("texture/patterns/snow/selected_texture.jpg");
rolloverTexture = new LazyImageIcon("texture/patterns/snow/rollover_texture.jpg");
pressedTexture = new LazyImageIcon("texture/patterns/snow/pressed_texture.jpg");
disabledTexture = new LazyImageIcon("texture/patterns/snow/background_texture.jpg");
menubarTexture = new LazyImageIcon("texture/patterns/snow/window_texture.jpg");
} else {
windowTexture = new LazyImageIcon("texture/patterns/leather/window_texture.jpg");
backgroundTexture = new LazyImageIcon("texture/patterns/leather/background_texture.jpg");
alterBackgroundTexture = new LazyImageIcon("texture/patterns/leather/alter_background_texture.jpg");
selectedTexture = new LazyImageIcon("texture/patterns/leather/window_texture.jpg");
rolloverTexture = new LazyImageIcon("texture/patterns/leather/rollover_texture.jpg");
pressedTexture = new LazyImageIcon("texture/patterns/leather/pressed_texture.jpg");
disabledTexture = new LazyImageIcon("texture/patterns/leather/background_texture.jpg");
menubarTexture = new LazyImageIcon("texture/patterns/leather/menubar_texture.jpg");
}
Icon texture = AbstractLookAndFeel.getTheme().getWindowTexture();
if (texture != null) {
windowTexture = texture;
}
texture = AbstractLookAndFeel.getTheme().getBackgroundTexture();
if (texture != null) {
backgroundTexture = texture;
}
texture = AbstractLookAndFeel.getTheme().getAlterBackgroundTexture();
if (texture != null) {
alterBackgroundTexture = texture;
}
texture = AbstractLookAndFeel.getTheme().getSelectedTexture();
if (texture != null) {
selectedTexture = texture;
}
texture = AbstractLookAndFeel.getTheme().getRolloverTexture();
if (texture != null) {
rolloverTexture = texture;
}
texture = AbstractLookAndFeel.getTheme().getPressedTexture();
if (texture != null) {
pressedTexture = texture;
}
texture = AbstractLookAndFeel.getTheme().getDisabledTexture();
if (texture != null) {
disabledTexture = texture;
}
texture = AbstractLookAndFeel.getTheme().getMenubarTexture();
if (texture != null) {
menubarTexture = texture;
}
}
public static int getTextureType(JComponent c) {
int textureType = TextureUtils.BACKGROUND_TEXTURE_TYPE;
Object textureProperty = c.getClientProperty("textureType");
if (textureProperty instanceof Integer) {
int bt = (Integer)textureProperty;
if (bt >= 0 && bt <= TextureUtils.LAST_TEXTURE_TYPE) {
textureType = bt;
}
}
return textureType;
}
public static Icon getTexture(int textureType) {
Icon texture = null;
switch (textureType) {
case WINDOW_TEXTURE_TYPE:
texture = windowTexture;
break;
case BACKGROUND_TEXTURE_TYPE:
texture = backgroundTexture;
break;
case ALTER_BACKGROUND_TEXTURE_TYPE:
texture = alterBackgroundTexture;
break;
case SELECTED_TEXTURE_TYPE:
texture = selectedTexture;
break;
case ROLLOVER_TEXTURE_TYPE:
texture = rolloverTexture;
break;
case PRESSED_TEXTURE_TYPE:
texture = pressedTexture;
break;
case DISABLED_TEXTURE_TYPE:
texture = disabledTexture;
break;
case MENUBAR_TEXTURE_TYPE:
texture = menubarTexture;
break;
}
return texture;
}
public static void fillComponent(Graphics g, Component c, int textureType) {
JTattooUtilities.fillComponent(g, c, getTexture(textureType));
}
public static void fillComponent(Graphics g, Component c, int x, int y, int w, int h, int textureType) {
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);
Icon texture = getTexture(textureType);
if (texture != null) {
int tw = texture.getIconWidth();
int th = texture.getIconHeight();
Point p = JTattooUtilities.getRelLocation(c);
int ys = y - p.y;
while (ys < (y + h)) {
int xs = x - p.x;
while (xs < (x + w)) {
texture.paintIcon(c, g, xs, ys);
xs += tw;
}
ys += th;
}
} else {
g.setColor(c.getBackground());
g.fillRect(x, y, w, h);
}
g2D.setClip(savedClip);
}
public static void fillRect(Graphics g, Component c, int x, int y, int w, int h, int textureType) {
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);
Icon texture = getTexture(textureType);
if (texture != null) {
int tw = texture.getIconWidth();
int th = texture.getIconHeight();
int ys = y;
while (ys < (y + h)) {
int xs = x;
while (xs < (x + w)) {
texture.paintIcon(c, g, xs, ys);
xs += tw;
}
ys += th;
}
} else {
g.setColor(c.getBackground());
g.fillRect(x, y, w, h);
}
g2D.setClip(savedClip);
}
} // end of class TextureUtils