| /****************************************************************************** |
| * Copyright (c) 2004, 2006 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| ****************************************************************************/ |
| |
| package org.eclipse.gmf.runtime.draw2d.ui.render.internal.factory; |
| |
| import org.eclipse.gmf.runtime.draw2d.ui.render.RenderInfo; |
| import org.eclipse.swt.graphics.RGB; |
| |
| /** |
| * @author sshaw |
| * @canBeSeenBy org.eclipse.gmf.runtime.draw2d.ui.render.* |
| * |
| * Contains information needed by RenderedImage to perform the rendering of the |
| * graphics data. |
| */ |
| class RenderInfoImpl |
| implements RenderInfo { |
| |
| private boolean maintainAspectRatio; |
| |
| private boolean antialias; |
| |
| private int width; |
| |
| private int height; |
| |
| private RGB fill = null; |
| |
| private RGB outline = null; |
| |
| /** |
| * getWidth Accessor method to return the width of the rendered image. |
| * |
| * @return int width of the rendered image. |
| */ |
| public int getWidth() { |
| return width; |
| } |
| |
| /** |
| * getHeight Accessor method to return the height of the rendered image. |
| * |
| * @return int height of the rendered image. |
| */ |
| public int getHeight() { |
| return height; |
| } |
| |
| /** |
| * shouldMaintainAspectRatio Accessor method to return whether or not the |
| * aspect ratio is maintained. |
| * |
| * @return boolean true if aspect ratio of original vector file is |
| * maintained, false otherwise. |
| */ |
| public boolean shouldMaintainAspectRatio() { |
| return maintainAspectRatio; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.gmf.runtime.gef.ui.internal.render.RenderInfo#shouldAntiAlias() |
| */ |
| public boolean shouldAntiAlias() { |
| return antialias; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.gmf.runtime.draw2d.ui.render.RenderInfo#getBackgroundColor() |
| */ |
| public RGB getBackgroundColor() { |
| if (fill == null) |
| return null; |
| return new RGB(fill.red, fill.green, fill.blue); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.gmf.runtime.draw2d.ui.render.RenderInfo#getForegroundColor() |
| */ |
| public RGB getForegroundColor() { |
| if (outline == null) |
| return null; |
| return new RGB(outline.red, outline.green, outline.blue); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * @see org.eclipse.gmf.runtime.draw2d.ui.render.RenderInfo#setValues(int, int, boolean, boolean, org.eclipse.swt.graphics.RGB, org.eclipse.swt.graphics.RGB) |
| */ |
| public void setValues(int width, int height, |
| boolean maintainAspectRatio, boolean antialias, RGB fill, RGB outline) { |
| this.width = width; |
| this.height = height; |
| this.fill = fill == null ? null : new RGB(fill.red, fill.green, fill.blue); |
| this.outline = outline == null ? null : new RGB(outline.red, outline.green, outline.blue); |
| this.maintainAspectRatio = maintainAspectRatio; |
| this.antialias = antialias; |
| } |
| |
| /** |
| * Default Constructor for the SVGInfo class |
| */ |
| public RenderInfoImpl() { |
| super(); |
| |
| this.width = 0; |
| this.height = 0; |
| this.fill = null; |
| this.outline = null; |
| this.maintainAspectRatio = true; |
| this.antialias = true; |
| } |
| |
| /** |
| * Copy Constructor for the SVGInfo class |
| */ |
| public RenderInfoImpl(RenderInfo info) { |
| super(); |
| |
| this.width = info.getWidth(); |
| this.height = info.getHeight(); |
| this.fill = info.getBackgroundColor(); |
| this.outline = info.getForegroundColor(); |
| this.maintainAspectRatio = info.shouldMaintainAspectRatio(); |
| this.antialias = info.shouldAntiAlias(); |
| } |
| |
| /** |
| * Retrieves a hash code value for this output operation. This method is |
| * supported for the benefit of hashtables such as those provided by |
| * <code>java.util.Hashtable</code>. |
| * |
| * @return A hash code value for this output operation. |
| * |
| * @see Object#hashCode() |
| */ |
| public int hashCode() { |
| int hashCode = (new Integer(width)).hashCode(); |
| hashCode = hashCode + (new Integer(height)).hashCode(); |
| hashCode = hashCode + (Boolean.valueOf(maintainAspectRatio)).hashCode(); |
| hashCode = hashCode + (Boolean.valueOf(antialias)).hashCode(); |
| if (fill != null) |
| hashCode = hashCode + fill.hashCode(); |
| if (outline != null) |
| hashCode = hashCode + outline.hashCode(); |
| return hashCode; |
| } |
| |
| /** |
| * @see java.lang.Object#equals(java.lang.Object) |
| */ |
| public boolean equals(Object object) { |
| |
| RenderInfoImpl info = null; |
| if (object instanceof RenderInfoImpl) { |
| info = (RenderInfoImpl) object; |
| } |
| |
| if (info != null |
| && (getWidth() == info.getWidth() |
| && getHeight() == info.getHeight() |
| && shouldMaintainAspectRatio() == info |
| .shouldMaintainAspectRatio() && shouldAntiAlias() == info |
| .shouldAntiAlias())) { |
| |
| if (getBackgroundColor() == null) { |
| if (info.getBackgroundColor() != null) |
| return false; |
| } else if (!getBackgroundColor().equals(info.getBackgroundColor())) |
| return false; |
| |
| if (getForegroundColor() == null) { |
| if (info.getForegroundColor() != null) |
| return false; |
| } else if (!getForegroundColor().equals(info.getForegroundColor())) |
| return false; |
| |
| return true; |
| } |
| |
| return false; |
| } |
| |
| } |