Java Code Examples for java.awt.Color#HSBtoRGB

The following examples show how to use java.awt.Color#HSBtoRGB . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ShapeView.java    From lgmodeler with GNU General Public License v3.0 6 votes vote down vote up
public void updateIcon(){
	Graphics g = icon.getGraphics();
	if(shape.getColor() == 0){
		g.drawImage(Resources.CLEAR_SHAPE_ICONS[shape.getType().ordinal()+1],0,0,null);
	} else {
		Image src = Resources.SHAPE_ICONS[shape.getType().ordinal()+1];
		g.drawImage(src, 0, 0, null);
		int[] data = ((DataBufferInt)icon.getRaster().getDataBuffer()).getData();
		float[] hsb = new float[3];
		int col = shapeList.getColor(shape.getColor());
		Color.RGBtoHSB((col>>16)&0xFF,(col>>8)&0xFF,col&0xFF,hsb);
		float hue = hsb[0];
		float sat = hsb[1];
		float bright = hsb[2];
		for(int i = 0; i < data.length; i++){
			int rgb = data[i];
			int a = rgb&0xFF000000;
			Color.RGBtoHSB((rgb>>16)&0xFF, (rgb>>8)&0xFF, rgb&0xFF, hsb);
			hsb[0] = hue;
			hsb[1] = sat;
			hsb[2] *= 0.5f + 0.5f*bright;
			data[i] = a | (Color.HSBtoRGB(hsb[0], hsb[1], hsb[2])&0xFFFFFF);
		}
	}
}
 
Example 2
Source File: MovementModifierEnvelopeSprite.java    From megamek with GNU General Public License v2.0 6 votes vote down vote up
/**
 * @param boardView1
 * @param mp
 */
public MovementModifierEnvelopeSprite(BoardView1 boardView1, MovePath mp) {
    super(boardView1, mp.getFinalCoords());

    facing = Facing.valueOfInt(mp.getFinalFacing());
    
    int modi = Compute.getTargetMovementModifier(mp.getHexesMoved(),
            mp.isJumping(),
            mp.getEntity() instanceof VTOL,
            boardView1.game).getValue();
    //Add evasion bonus for 'Mech with dual cockpit
    if (mp.getEntity().getCrew().getCrewType().equals(CrewType.DUAL)
            && mp.getEntity().getCrew().hasDedicatedPilot()
            && !mp.isJumping() && mp.getHexesMoved() > 0) {
        modi++;
    }
    float hue = 0.7f - 0.15f * modi;
    color = new Color(Color.HSBtoRGB(hue, 1, 1));
    modifier = String.format("%+d", modi);
}
 
Example 3
Source File: AngleColorModel.java    From SproutLife with MIT License 6 votes vote down vote up
private Color getColor(Organism o, float h, float s, float br) {
    Organism[] ancestors = new Organism[4];
    Organism a = o;
    for (int ai=0;ai<ancestors.length;ai++) {
        ancestors[ai]=a;
        a = a.getParent();
        if (a==null) {
            return getRandomColor(o);
        }
    }
    double dp1 = getDotProduct(ancestors[0], ancestors[1], ancestors[2]);
    double dp2 = getDotProduct(ancestors[1], ancestors[2], ancestors[3]);

    float r1 = getRotation(dp1);
    float r2 = getRotation(dp2);

    Color c1 = new Color(Color.HSBtoRGB(h+r1, s, br));
    Color c2 = new Color(Color.HSBtoRGB(h+r2, s, br));

    int r = (c1.getRed()*3+c2.getRed()*2)/5;
    int g = (c1.getGreen()*3+c2.getGreen()*2)/5;
    int b = (c1.getBlue()*3+c2.getBlue()*2)/5;

    return new Color(r,g,b);
}
 
Example 4
Source File: TextBlock.java    From pumpernickel with MIT License 6 votes vote down vote up
public TextBlock(float hue, String text) {
	properties.addListener(new PropertyChangeListener() {
		@Override
		public void propertyChange(PropertyChangeEvent evt) {
			dirty = true;
		}
	});
	setAntiAliased(true);
	setTextPaint(Color.black);
	setUsingFractionalMetrics(true);
	setFont(new Font("default", Font.BOLD, 14));
	setText(text);
	setInsets(new Insets(2, 2, 2, 2));
	setShadowActive(true);
	setTextShadowActive(true);
	Color c1 = new Color(Color.HSBtoRGB(hue, .8f, 1));
	Color c2 = new Color(Color.HSBtoRGB(hue, .8f, .7f));
	setBackground(new GradientPaint(0, 0, c1, 0, 20, c2));
	setBorderPaint(new Color(0, 0, 0, 90));
	setStroke(new BasicStroke(1));
	setCurveWidth(18);
	setTextInsets(new Insets(2, 8, 2, 8));
	setBackgroundShadowColor(new Color(0, 0, 0, 50));
}
 
Example 5
Source File: LabelColorSchemes.java    From diirt with MIT License 6 votes vote down vote up
/**
 *Returns a new LabelColorScheme, based on the given hex labels.
 * @param labels a list of strings (color values in hexadecimal)
 * @return a LabelColorScheme with the method getColor, that will return a Color corresponding to the hex label.
 */
public static LabelColorScheme orderedHueColor(List<String> labels) {
    final List<String> orderedUniqueLabels = new ArrayList<String>(new TreeSet<String>(labels));
    return new LabelColorScheme() {

        float step = (1.0f / 3) / ((float) Math.ceil(orderedUniqueLabels.size() / 3.0));

        @Override
        public int getColor(String label) {
            int index = orderedUniqueLabels.indexOf(label);
            if (index == -1) {
                return 0;
            }
            return Color.HSBtoRGB(index * step, 1.0f, 1.0f);
        }
    };
}
 
Example 6
Source File: XYBlockPixelSizePaintScales.java    From mzmine2 with GNU General Public License v2.0 6 votes vote down vote up
public static Paint[] getFullRainBowScaleUpperBound() {
  int ncolor = 360;
  Color[] readRainbow = new Color[ncolor];
  Color[] rainbow = new Color[ncolor];

  float x = (float) (1. / (ncolor + 160));
  for (int i = 0; i < readRainbow.length; i++) {
    readRainbow[i] = new Color(Color.HSBtoRGB((i) * x, 1.0F, 1.0F));
  }
  for (int i = 0; i < readRainbow.length - 5; i++) {
    rainbow[i] = readRainbow[readRainbow.length - i - 1];
  }
  for (int i = rainbow.length - 5; i < rainbow.length; i++) {
    rainbow[i] = new Color(244, 66, 223);
  }
  return rainbow;
}
 
Example 7
Source File: AbstractRegionPainter.java    From seaglass with Apache License 2.0 5 votes vote down vote up
/**
 * Derive and returns a color, which is based on an existing color.
 *
 * @param  src     The source color from which to derive the new color.
 * @param  hOffset The hue offset used for derivation.
 * @param  sOffset The saturation offset used for derivation.
 * @param  bOffset The brightness offset used for derivation.
 * @param  aOffset The alpha offset used for derivation. Between 0...255
 *
 * @return The derived color.
 */
protected Color deriveColor(Color src, float hOffset, float sOffset, float bOffset, int aOffset) {
    float[] tmp = Color.RGBtoHSB(src.getRed(), src.getGreen(), src.getBlue(), null);

    // apply offsets
    tmp[0] = clamp(tmp[0] + hOffset);
    tmp[1] = clamp(tmp[1] + sOffset);
    tmp[2] = clamp(tmp[2] + bOffset);
    int alpha = clamp(src.getAlpha() + aOffset);

    return new Color((Color.HSBtoRGB(tmp[0], tmp[1], tmp[2]) & 0xFFFFFF) | (alpha << 24), true);
}
 
Example 8
Source File: DistanceRainbow.java    From opsu-dance with GNU General Public License v3.0 5 votes vote down vote up
@Override
public int getMovementColor(float movementProgress)
{
	float hue = this.hueBeforeMove + this.hueIncrease * movementProgress;
	hue = hue - (float) Math.floor(hue);
	return Color.HSBtoRGB(hue, saturation, 1f);
}
 
Example 9
Source File: OldGoldenSpiral.java    From IngressAnimations with GNU General Public License v3.0 5 votes vote down vote up
public static Color[] generatePastels(int n) {
	Color[] cc = new Color[n];
	for (int i=0; i<cc.length; i++) {
		cc[i] = new Color(Color.HSBtoRGB(((float)i)/n, 0.76f,1f));
	}
	return cc;
}
 
Example 10
Source File: DarkenedIcon.java    From pumpernickel with MIT License 5 votes vote down vote up
/**
 * 
 * @param c
 *            the optional component used to invoke icon.paintIcon().
 *            Unfortunately for some icons (like
 *            UIManager.getIcon("IthisnternalFrame.maximizeIcon")) on
 *            Windows: we'll get a NPE if this is null.
 * 
 * @return
 */
private BufferedImage createImage(Component c) {
	Icon i = getIcon();
	BufferedImage bi = new BufferedImage(i.getIconWidth(),
			i.getIconHeight(), BufferedImage.TYPE_INT_ARGB);
	Graphics2D g = bi.createGraphics();
	i.paintIcon(c, g, 0, 0);
	g.dispose();

	int[] row = new int[bi.getWidth()];
	float[] hsbvals = new float[3];
	for (int y = 0; y < bi.getHeight(); y++) {
		bi.getRaster().getDataElements(0, y, bi.getWidth(), 1, row);
		for (int x = 0; x < bi.getWidth(); x++) {
			int red = (row[x] & 0x00ff0000) >> 16;
			int green = (row[x] & 0x00ff00) >> 8;
			int blue = (row[x] & 0x00ff) >> 0;
			Color.RGBtoHSB(red, green, blue, hsbvals);
			hsbvals[2] = hsbvals[2] * (1 - f);
			int k = Color.HSBtoRGB(hsbvals[0], hsbvals[1], hsbvals[2]);
			k = (k & 0xffffff) + (row[x] & 0xff000000);
			row[x] = k;
		}
		bi.getRaster().setDataElements(0, y, bi.getWidth(), 1, row);
	}
	return bi;
}
 
Example 11
Source File: HsbColor.java    From mars-sim with GNU General Public License v3.0 5 votes vote down vote up
private HsbColor(Builder builder) {
    // private Constructor can only be called from Builder
    mHue = builder.getHue();
    mSaturation = builder.getSaturation();
    mBrightness = builder.getBrightness();
    final Color TMP_COLOR = new Color(Color.HSBtoRGB(mHue, mSaturation, mBrightness));
    mColor = new Color(TMP_COLOR.getRed(), TMP_COLOR.getGreen(), TMP_COLOR.getBlue(), builder.getAlpha());
}
 
Example 12
Source File: MandelbrotColor.java    From fractals with GNU General Public License v2.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {
    int width = 1920, height = 1080, max = 1000;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    int black = 0;
    int[] colors = new int[max];
    for (int i = 0; i<max; i++) {
        colors[i] = Color.HSBtoRGB(i/256f, 1, i/(i+8f));
    }

    for (int row = 0; row < height; row++) {
        for (int col = 0; col < width; col++) {
            double c_re = (col - width/2)*4.0/width;
            double c_im = (row - height/2)*4.0/width;
            double x = 0, y = 0;
            double r2;
            int iteration = 0;
            while (x*x+y*y < 4 && iteration < max) {
                double x_new = x*x-y*y+c_re;
                y = 2*x*y+c_im;
                x = x_new;
                iteration++;
            } 
            if (iteration < max) image.setRGB(col, row, colors[iteration]);
            else image.setRGB(col, row, black);
        }
    }

    ImageIO.write(image, "png", new File("mandelbrot.png"));
}
 
Example 13
Source File: HueComposite.java    From Pixelitor with GNU General Public License v3.0 5 votes vote down vote up
@Override
public void composeRGB(int[] src, int[] dst, float alpha) {
    int w = src.length;

    for (int i = 0; i < w; i += 4) {
        int sr = src[i];
        int dir = dst[i];
        int sg = src[i + 1];
        int dig = dst[i + 1];
        int sb = src[i + 2];
        int dib = dst[i + 2];
        int sa = src[i + 3];
        int dia = dst[i + 3];
        int dor, dog, dob;

        Color.RGBtoHSB(sr, sg, sb, sHSB);
        Color.RGBtoHSB(dir, dig, dib, dHSB);

        dHSB[0] = sHSB[0];

        int doRGB = Color.HSBtoRGB(dHSB[0], dHSB[1], dHSB[2]);
        dor = (doRGB & 0xff0000) >> 16;
        dog = (doRGB & 0xff00) >> 8;
        dob = (doRGB & 0xff);

        float a = alpha * sa / 255.0f;
        float ac = 1 - a;

        dst[i] = (int) (a * dor + ac * dir);
        dst[i + 1] = (int) (a * dog + ac * dig);
        dst[i + 2] = (int) (a * dob + ac * dib);
        dst[i + 3] = (int) (sa * alpha + dia * ac);
    }
}
 
Example 14
Source File: RangeSliderUI.java    From mars-sim with GNU General Public License v3.0 4 votes vote down vote up
public RangeSliderUI(final RangeSlider RANGE_SLIDER) {
    super(RANGE_SLIDER);
    thumbShape = RANGE_SLIDER.getThumbShape() != null ? RANGE_SLIDER.getThumbShape() : RangeSlider.ThumbShape.ROUND;
    thumbDesign = RANGE_SLIDER.getThumbDesign() != null ? RANGE_SLIDER.getThumbDesign() : RangeSlider.ThumbDesign.DARK;
    final Color RANGE_COLOR = RANGE_SLIDER.getRangeColor() != null ? RANGE_SLIDER.getRangeColor() : new Color(51, 204, 255);
    final int RED = RANGE_COLOR.getRed();
    final int GREEN = RANGE_COLOR.getGreen();
    final int BLUE = RANGE_COLOR.getBlue();
    if ((RED == GREEN) && (GREEN == BLUE)) {
        rangeColors = new Color[]{
            new Color(Color.HSBtoRGB(0.0f, 0.0f, 0.95f)),
            new Color(Color.HSBtoRGB(0.0f, 0.0f, 0.88f)),
            new Color(Color.HSBtoRGB(0.0f, 0.0f, 0.67f)),
            new Color(Color.HSBtoRGB(0.0f, 0.0f, 0.49f))
        };
    } else {
        final float RANGE_COLOR_HUE = Color.RGBtoHSB(RED, GREEN, BLUE, null)[0];
        rangeColors = new Color[]{
            new Color(Color.HSBtoRGB(RANGE_COLOR_HUE, 0.85f, 0.95f)),
            new Color(Color.HSBtoRGB(RANGE_COLOR_HUE, 0.85f, 0.88f)),
            new Color(Color.HSBtoRGB(RANGE_COLOR_HUE, 0.85f, 0.67f)),
            new Color(Color.HSBtoRGB(RANGE_COLOR_HUE, 0.85f, 0.49f))
        };
    }
    darkTrack = RANGE_SLIDER.isDarkTrack();
    slider = RANGE_SLIDER;
    initThumbs();
    lowerThumbHover = false;
    upperThumbHover = false;
    TRACK_FRAME = new RoundRectangle2D.Double();
    TRACK = new RoundRectangle2D.Double();
    RANGE = new RoundRectangle2D.Double();
    switch(thumbShape) {
        case ROUND:
            indicatorsVisible = true;
            break;
        case SQUARE:
            indicatorsVisible = true;
            break;
        default:
            indicatorsVisible = false;
    }
}
 
Example 15
Source File: TimeRainbow.java    From opsu-dance with GNU General Public License v3.0 4 votes vote down vote up
@Override
public int getMovementColor(float movementProgress)
{
	return Color.HSBtoRGB(this.hue, saturation, 1.0f);
}
 
Example 16
Source File: PanelCanvas.java    From nanoleaf-desktop with MIT License 4 votes vote down vote up
public void checkAuroraState() throws StatusCodeException
{
	if (devices != null && devices[0] != null)
	{
		stopLoadingSpinner();
		
		String colorMode = devices[0].state().getColorMode();
		if (colorMode.equals("hs") || colorMode.equals("ct"))
		{
			if (customEffectDisplay != null)
			{
				customEffectDisplay.stop();
			}
			
			int hue = devices[0].state().getHue();
			int sat = devices[0].state().getSaturation();
			int bri = devices[0].state().getBrightness();
			setHSB(hue, sat, bri);
		}
		else if (colorMode.equals("effects") || colorMode.equals("effect"))
		{
			String currentEffectName = devices[0].effects().getCurrentEffectName();
			Effect currentEffect = devices[0].effects().getCurrentEffect();
			if (currentEffect != null && currentEffect.getAnimType() != null)
			{
				if (currentEffectName.equals("*Static*") ||
						currentEffect.getAnimType().equals(Effect.Type.STATIC))
				{
					if (customEffectDisplay != null)
					{
						customEffectDisplay.stop();
					}
					setStaticEffect(currentEffect);
				}
				else if (currentEffect.getAnimType().equals(Effect.Type.CUSTOM))
				{
					// **************** Currently disabled ****************
					//customEffectDisplay.changeEffect(currentEffect);
				}
				else if (!currentEffect.getAnimType().equals(Effect.Type.STATIC))
				{
					if (customEffectDisplay != null)
					{
						customEffectDisplay.stop();
					}
					io.github.rowak.nanoleafapi.Color[] palette =
							currentEffect.getPalette();
					int[] avgRgb = new int[3];
					if (palette != null)
					{
						for (io.github.rowak.nanoleafapi.Color c : palette)
						{
							Color rgb = new Color(Color.HSBtoRGB(c.getHue()/360f,
									c.getSaturation()/100f, c.getBrightness()/100f));
							avgRgb[0] += rgb.getRed();
							avgRgb[1] += rgb.getGreen();
							avgRgb[2] += rgb.getBlue();
						}
						Color avgColor = new Color(avgRgb[0]/palette.length,
								avgRgb[1]/palette.length, avgRgb[2]/palette.length);
						setColor(avgColor);
					}
				}
			}
		}
	}
}
 
Example 17
Source File: Gradient.java    From Pixelitor with GNU General Public License v3.0 4 votes vote down vote up
private void rebuildGradient() {
        xKnots[0] = -1;
        xKnots[numKnots - 1] = 256;
        yKnots[0] = yKnots[1];
        yKnots[numKnots - 1] = yKnots[numKnots - 2];

//		int knot = 0;
        for (int i = 1; i < numKnots - 1; i++) {
            float spanLength = xKnots[i + 1] - xKnots[i];
            int end = xKnots[i + 1];
            if (i == numKnots - 2) {
                end++;
            }
            for (int j = xKnots[i]; j < end; j++) {
                int rgb1 = yKnots[i];
                int rgb2 = yKnots[i + 1];
                float[] hsb1 = Color.RGBtoHSB((rgb1 >> 16) & 0xff, (rgb1 >> 8) & 0xff, rgb1 & 0xff, null);
                float[] hsb2 = Color.RGBtoHSB((rgb2 >> 16) & 0xff, (rgb2 >> 8) & 0xff, rgb2 & 0xff, null);
                float t = (j - xKnots[i]) / spanLength;
                int type = getKnotType(i);
                int blend = getKnotBlend(i);

                if (j >= 0 && j <= 255) {
                    switch (blend) {
                        case CONSTANT:
                            t = 0;
                            break;
                        case LINEAR:
                            break;
                        case SPLINE:
//						map[i] = ImageMath.colorSpline(j, numKnots, xKnots, yKnots);
                            t = ImageMath.smoothStep(0.15f, 0.85f, t);
                            break;
                        case CIRCLE_UP:
                            t = t - 1;
                            t = (float) Math.sqrt(1 - t * t);
                            break;
                        case CIRCLE_DOWN:
                            t = 1 - (float) Math.sqrt(1 - t * t);
                            break;
                    }
//					if (blend != SPLINE) {
                    switch (type) {
                        case RGB:
                            map[j] = ImageMath.mixColors(t, rgb1, rgb2);
                            break;
                        case HUE_CW:
                        case HUE_CCW:
                            if (type == HUE_CW) {
                                if (hsb2[0] <= hsb1[0]) {
                                    hsb2[0] += 1.0f;
                                }
                            } else {
                                if (hsb1[0] <= hsb2[1]) {
                                    hsb1[0] += 1.0f;
                                }
                            }
                            float h = ImageMath.lerp(t, hsb1[0], hsb2[0]) % ImageMath.TWO_PI;
                            float s = ImageMath.lerp(t, hsb1[1], hsb2[1]);
                            float b = ImageMath.lerp(t, hsb1[2], hsb2[2]);
                            map[j] = 0xff000000 | Color.HSBtoRGB(h, s, b);//FIXME-alpha
                            break;
                    }
//					}
                }
            }
        }
    }
 
Example 18
Source File: GuiComponentColorPicker.java    From OpenModsLib with MIT License 4 votes vote down vote up
public int getColor() {
	float h = pointX * 0.01f;
	float b = 1.0f - (pointY * 0.02f);
	float s = 1.0f - (tone / 255f);
	return Color.HSBtoRGB(h, s, b) & 0xFFFFFF;
}
 
Example 19
Source File: ColorPickerSliderUI.java    From pumpernickel with MIT License 4 votes vote down vote up
@Override
public synchronized void paintTrack(Graphics g) {
	int mode = colorPicker.getMode();
	if (mode == JColorPicker.HUE || mode == JColorPicker.BRI
			|| mode == JColorPicker.SAT) {
		float[] hsb = colorPicker.getHSB();
		if (mode == JColorPicker.HUE) {
			for (int y = 0; y < trackRect.height; y++) {
				float hue = ((float) y) / ((float) trackRect.height);
				intArray[y] = Color.HSBtoRGB(hue, 1, 1);
			}
		} else if (mode == JColorPicker.SAT) {
			for (int y = 0; y < trackRect.height; y++) {
				float sat = 1 - ((float) y) / ((float) trackRect.height);
				intArray[y] = Color.HSBtoRGB(hsb[0], sat, hsb[2]);
			}
		} else {
			for (int y = 0; y < trackRect.height; y++) {
				float bri = 1 - ((float) y) / ((float) trackRect.height);
				intArray[y] = Color.HSBtoRGB(hsb[0], hsb[1], bri);
			}
		}
	} else {
		int[] rgb = colorPicker.getRGB();
		if (mode == JColorPicker.RED) {
			for (int y = 0; y < trackRect.height; y++) {
				int red = 255 - (int) (y * 255 / trackRect.height + .49);
				intArray[y] = (red << 16) + (rgb[1] << 8) + (rgb[2]);
			}
		} else if (mode == JColorPicker.GREEN) {
			for (int y = 0; y < trackRect.height; y++) {
				int green = 255 - (int) (y * 255 / trackRect.height + .49);
				intArray[y] = (rgb[0] << 16) + (green << 8) + (rgb[2]);
			}
		} else if (mode == JColorPicker.BLUE) {
			for (int y = 0; y < trackRect.height; y++) {
				int blue = 255 - (int) (y * 255 / trackRect.height + .49);
				intArray[y] = (rgb[0] << 16) + (rgb[1] << 8) + (blue);
			}
		}
	}
	Graphics2D g2 = (Graphics2D) g;
	Rectangle r = new Rectangle(6, trackRect.y, 14, trackRect.height);
	if (slider.hasFocus()) {
		PlafPaintUtils.paintFocus(g2, r, 3);
	}

	bi.getRaster().setDataElements(0, 0, 1, trackRect.height, intArray);
	TexturePaint p = new TexturePaint(bi, new Rectangle(0, trackRect.y, 1,
			bi.getHeight()));
	g2.setPaint(p);
	g2.fillRect(r.x, r.y, r.width, r.height);

	PlafPaintUtils.drawBevel(g2, r);
}
 
Example 20
Source File: Colors.java    From gcs with Mozilla Public License 2.0 2 votes vote down vote up
/**
 * @param color  The color to base the new color on.
 * @param amount The amount to adjust the hue by, in the range -1 to 1.
 * @return The adjusted color.
 */
public static final Color adjustHue(Color color, float amount) {
    float[] hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null);
    return new Color(Color.HSBtoRGB(Math.max(Math.min(hsb[0] + amount, 1.0f), 0.0f), hsb[1], hsb[2]));
}