/* * HomeTexture.java 5 oct. 07 * * Sweet Home 3D, Copyright (c) 2007 Emmanuel PUYBARET / eTeks <info@eteks.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package com.eteks.sweethome3d.model; import java.io.Serializable; /** * An image used as texture on home 3D objects. * @author Emmanuel Puybaret */ public class HomeTexture implements TextureImage, Serializable { private static final long serialVersionUID = 1L; private final String name; private final Content image; private final float width; private final float height; private final boolean leftToRightOriented; /** * Creates a home texture from an existing one. * @param texture the texture from which data are copied */ public HomeTexture(TextureImage texture) { this.name = texture.getName(); this.image = texture.getImage(); this.width = texture.getWidth(); this.height = texture.getHeight(); // Texture is left to right oriented when applied on objects seen from front // added to homes with a version 3.4 and higher this.leftToRightOriented = true; } /** * Returns the name of this texture. */ public String getName() { return this.name; } /** * Returns the content of the image used for this texture. */ public Content getImage() { return this.image; } /** * Returns the width of the image in centimeters. */ public float getWidth() { return this.width; } /** * Returns the height of the image in centimeters. */ public float getHeight() { return this.height; } /** * Returns <code>true</code> if the objects using this texture should take into account * the orientation of the texture. * @since 3.4 */ public boolean isLeftToRightOriented() { return this.leftToRightOriented; } /** * Returns <code>true</code> if the object in parameter is equal to this texture. */ @Override public boolean equals(Object obj) { if (obj == this) { return true; } else if (obj instanceof HomeTexture) { HomeTexture texture = (HomeTexture)obj; return (texture.name == this.name || texture.name != null && texture.name.equals(this.name)) && (texture.image == this.image || texture.image != null && texture.image.equals(this.image)) && texture.width == this.width && texture.height == this.height && texture.leftToRightOriented == this.leftToRightOriented; } else { return false; } } /** * Returns a hash code for this texture. */ @Override public int hashCode() { return (this.name != null ? this.name.hashCode() : 0) + (this.image != null ? this.image.hashCode() : 0) + Float.floatToIntBits(this.width) + Float.floatToIntBits(this.height); } }