001 /*
002 * This file is part of the Jikes RVM project (http://jikesrvm.org).
003 *
004 * This file is licensed to You under the Eclipse Public License (EPL);
005 * You may not use this file except in compliance with the License. You
006 * may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/eclipse-1.0.php
009 *
010 * See the COPYRIGHT.txt file distributed with this work for information
011 * regarding copyright ownership.
012 */
013 package org.mmtk.utility.gcspy;
014
015 import org.mmtk.vm.VM;
016
017 import org.vmmagic.pragma.*;
018
019 /**
020 * Cut-down implementation of java.awt.Color sufficient to provide
021 * the server side (Stream) with colours
022 */
023 @Uninterruptible public class Color {
024
025 /*Some gcspy standard colours (taken from gcspy_color_db.c). */
026 public static final Color Black = new Color(0, 0, 0);
027 public static final Color Blue = new Color(0, 0, 255);
028 public static final Color Cyan = new Color(0, 255, 255);
029 public static final Color DarkGray = new Color(64, 64, 64);
030 public static final Color Gray = new Color(128, 128, 128);
031 public static final Color Green = new Color(0, 255, 0);
032 public static final Color LightGray = new Color(192, 192, 192);
033 public static final Color Magenta = new Color(255, 0, 255);
034 public static final Color MidGray = new Color(160, 160, 160);
035 public static final Color NavyBlue = new Color(0, 0, 150);
036 public static final Color OffWhite = new Color(230, 230, 230);
037 public static final Color Orange = new Color(255, 200, 0);
038 public static final Color Pink = new Color(255, 175, 175);
039 public static final Color Red = new Color(255, 0, 0);
040 public static final Color White = new Color(255, 255, 255);
041 public static final Color Yellow = new Color(255, 255, 0);
042
043 private short r; // red component
044 private short g; // green component
045 private short b; // blue component
046
047 /**
048 * Constructor for a simple RGB colour model.
049 *
050 * @param r red component
051 * @param g green component
052 * @param b blue component
053 */
054 public Color(short r, short g, short b) {
055 if (VM.VERIFY_ASSERTIONS)
056 VM.assertions._assert((0 <= r) && (r <= 255) &&
057 (0 <= g) && (g <= 255) &&
058 (0 <= b) && (b <= 255));
059 this.r = r;
060 this.g = g;
061 this.b = b;
062 }
063
064 /**
065 * Constructor for a simple RGB colour model.
066 *
067 * @param r red component
068 * @param g green component
069 * @param b blue component
070 */
071 private Color(int r, int g, int b) {
072 this((short) r, (short) g, (short) b);
073 }
074
075
076 /**
077 * Red component
078 *
079 * @return the red component
080 */
081 public short getRed() { return r; }
082
083 /**
084 * Green component
085 *
086 * @return the green component
087 */
088 public short getGreen() { return g; }
089
090 /**
091 * Blue component
092 *
093 * @return the blue component
094 */
095 public short getBlue() { return b; }
096 }