| /******************************************************************************* |
| * Copyright (c) 2011 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.stem.ui.adapters.color; |
| |
| import org.eclipse.swt.graphics.Device; |
| |
| /** |
| * Class to represent a RGBA color. Mainly for porting between |
| * SWT and AWT system colors. |
| * |
| */ |
| public class STEMColor |
| { |
| private static final float MAX_BYTE_VALUE = 255f; |
| |
| private final float r; |
| private final float g; |
| private final float b; |
| private final float a; |
| |
| /** |
| * Generic constructor for STEM Color |
| */ |
| public STEMColor() |
| { |
| this(0.0f, 0.0f, 0.0f); |
| } |
| |
| |
| /** |
| * Creates a STEM Color based on integer RGB values |
| * @param r Red color value 0-255 |
| * @param g Green color value 0-255 |
| * @param b Blue color value 0-255 |
| */ |
| public STEMColor(int r, int g, int b) |
| { |
| this(r,g,b,255); |
| } |
| |
| /** |
| * Creates a STEM Color based on integer RGBA values |
| * @param r Red color value 0-255 |
| * @param g Green color value 0-255 |
| * @param b Blue color value 0-255 |
| * @param a Alpha level 0-255 |
| */ |
| public STEMColor(int r, int g, int b, int a) |
| { |
| this(r/MAX_BYTE_VALUE, g/MAX_BYTE_VALUE, b/MAX_BYTE_VALUE, a/MAX_BYTE_VALUE); |
| } |
| |
| /** |
| * Creates a STEM Color based on floating point RGB values |
| * @param r Red color value 0.0-1.0 |
| * @param g Green color value 0.0-1.0 |
| * @param b Blue color value 0.0-1.0 |
| * |
| */ |
| public STEMColor(float r, float g, float b) |
| { |
| this(0.0f, 0.0f, 0.0f, 1.0f); |
| } |
| |
| /** |
| * Creates a STEM Color based on floating point RGBA values |
| * @param r Red color value 0.0-1.0 |
| * @param g Green color value 0.0-1.0 |
| * @param b Blue color value 0.0-1.0 |
| * @param a Alpha level 0.0-1.0 |
| */ |
| public STEMColor(float r, float g, float b, float a) |
| { |
| this.r = r; |
| this.g = g; |
| this.b = b; |
| this.a = a; |
| } |
| |
| /** |
| * @return The red value of this color (0.0 - 1.0) |
| */ |
| public float getRed() |
| { |
| return r; |
| } |
| |
| /** |
| * @return The green value of this color (0.0 - 1.0) |
| */ |
| public float getGreen() |
| { |
| return g; |
| } |
| |
| /** |
| * @return The blue value of this color (0.0 - 1.0) |
| */ |
| public float getBlue() |
| { |
| return b; |
| } |
| |
| /** |
| * @return The alpha level of this color (0.0 - 1.0) |
| */ |
| public float getAlpha() |
| { |
| return a; |
| } |
| |
| |
| /** |
| * Converts a Java AWT system color into a STEM color for the system |
| * |
| * @param color Java AWT system color to convert |
| * @return Generic STEM Color |
| */ |
| public static STEMColor toSTEMColor(java.awt.Color color) |
| { |
| return new STEMColor(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()); |
| } |
| |
| /** |
| * Converts an Eclipse SWT RGB value into a STEM color for the system |
| * |
| * @param color Eclipse SWT RGB value to convert |
| * @return Generic STEM Color |
| */ |
| public static STEMColor toSTEMColor(org.eclipse.swt.graphics.RGB color) |
| { |
| return new STEMColor(color.red, color.green, color.blue); |
| } |
| |
| /** |
| * Converts an Eclipse SWT Color into a STEM color for the system |
| * |
| * @param color Eclipse SWT Color to convert |
| * @return Generic STEM Color |
| */ |
| public static STEMColor toSTEMColor(org.eclipse.swt.graphics.Color color) |
| { |
| return new STEMColor(color.getRed(), color.getGreen(), color.getBlue()); |
| } |
| |
| /** |
| * Converts a STEM Color to a Java AWT color for this system |
| * |
| * @return A Java AWT system color that matches the STEM color |
| */ |
| public java.awt.Color toAWTColor() |
| { |
| return new java.awt.Color(r,g,b,a); |
| } |
| |
| /** |
| * Converts a STEM Color to an Eclipse SWT color for the device specified |
| * |
| * @param device The SWT Device that drives the color |
| * @return An Eclipse SWT color for the STEM Color and device specified |
| */ |
| public org.eclipse.swt.graphics.Color toSWTColor(Device device) |
| { |
| return new org.eclipse.swt.graphics.Color(device, (int)(r*MAX_BYTE_VALUE), (int)(g*MAX_BYTE_VALUE), (int)(b*MAX_BYTE_VALUE)); |
| } |
| |
| /* (non-Javadoc) |
| * @see java.lang.Object#toString() |
| */ |
| @Override |
| public String toString() { |
| return "STEMColor [r=" + r + ", g=" + g + ", b=" + b + ", a=" + a + "]"; |
| } |
| |
| } |