use of java.awt.RadialGradientPaint in project jdk8u_jdk by JetBrains.
the class ConcurrentWritingTest method createTestImage.
private static BufferedImage createTestImage() {
int w = 1024;
int h = 768;
BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g = img.createGraphics();
Color[] colors = { Color.red, Color.green, Color.blue };
float[] dist = { 0.0f, 0.5f, 1.0f };
Point2D center = new Point2D.Float(0.5f * w, 0.5f * h);
RadialGradientPaint p = new RadialGradientPaint(center, 0.5f * w, dist, colors);
g.setPaint(p);
g.fillRect(0, 0, w, h);
g.dispose();
return img;
}
use of java.awt.RadialGradientPaint in project jdk8u_jdk by JetBrains.
the class ConcurrentReadingTest method createTestFile.
private static void createTestFile() {
int w = 1280;
int h = 1024;
BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g = img.createGraphics();
Color[] colors = { Color.red, Color.green, Color.blue };
float[] dist = { 0.0f, 0.5f, 1.0f };
Point2D center = new Point2D.Float(0.5f * w, 0.5f * h);
RadialGradientPaint p = new RadialGradientPaint(center, 0.5f * w, dist, colors);
g.setPaint(p);
g.fillRect(0, 0, w, h);
g.dispose();
try {
System.out.println("Create test image " + file.getAbsolutePath());
boolean b = ImageIO.write(img, "JPEG", file);
if (!b) {
throw new RuntimeException("Failed to create test image.");
}
} catch (IOException e) {
throw new RuntimeException("Test failed", e);
}
}
use of java.awt.RadialGradientPaint in project vcell by virtualcell.
the class ResizeCanvasShapeIcon method paintIcon.
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
if (c == null) {
return;
}
if (!(c instanceof JButton)) {
return;
}
JButton b = (JButton) c;
// button center
int cx = b.getWidth() / 2;
int cy = b.getHeight() / 2;
Graphics2D g2 = (Graphics2D) g;
Color colorOld = g2.getColor();
Paint paintOld = g2.getPaint();
Stroke strokeOld = g2.getStroke();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// the nock (base end, towards the fletching) of the arrow shaft
Color interior;
// the spine (tip end, connecting to the arrow head) of the shaft
Color exterior;
// the arrow head
Color tip;
Color[] colors;
float[] dist;
Color c1, c2, c3;
if (sign == Sign.expand) {
c1 = SpeciesPatternLargeShape.componentGreen.darker();
c2 = SpeciesPatternLargeShape.componentGreen.darker().darker();
c3 = Color.green.darker().darker();
} else {
c1 = SpeciesPatternLargeShape.componentBad.darker();
c2 = SpeciesPatternLargeShape.componentBad.darker().darker();
c3 = Color.red.darker().darker();
}
Point2D center = new Point2D.Float(cx, cy);
float radius = side / 2 + 1;
// white mapped in the center
Point2D focus = new Point2D.Float(cx, cy);
if (b.isEnabled()) {
if (state == State.normal) {
// Color.cyan;
interior = c1;
// Color.blue;
exterior = c2;
// Color.blue.darker();
tip = c3.darker();
} else {
// pressed! same colors, brighter when button is pressed
// Color.cyan.brighter();
interior = c1.brighter();
// Color.blue.brighter();
exterior = c2.brighter();
// Color.blue;
tip = c3.brighter();
}
} else {
// disabled - uniform gray, regardless of pressed
interior = Color.lightGray;
exterior = Color.gray;
tip = Color.gray;
}
if (sign == Sign.expand) {
colors = new Color[] { interior, exterior };
dist = new float[] { 0.2f, 1.0f };
} else {
// arrow points the other way, so the arrow colors are inverted
colors = new Color[] { exterior, interior };
dist = new float[] { 0.9f, 1.0f };
}
RadialGradientPaint paint = new RadialGradientPaint(center, radius, focus, dist, colors, CycleMethod.NO_CYCLE);
g2.setPaint(paint);
// starting offset (how far away from center starts the shaft of the arrow)
int o;
// length of the 2 "wings" of the arrow head)
int d;
int xx = side / 2;
int yy = side / 2;
float strokeWidth;
if (sign == Sign.expand) {
o = 2;
d = 4;
strokeWidth = 2.0f;
} else {
// shrink
o = 2;
d = 4;
// xx++;
// yy++;
strokeWidth = 1.6f;
}
g2.setStroke(new // Line width
BasicStroke(// Line width
strokeWidth, // End-cap style
BasicStroke.CAP_ROUND, // Vertex join style
BasicStroke.JOIN_ROUND));
// upper left
g2.drawLine(cx - o, cy - o, cx - xx, cy - yy);
// upper right
g2.drawLine(cx + o, cy - o, cx + xx, cy - yy);
// lower left
g2.drawLine(cx - o, cy + o, cx - xx, cy + yy);
// lower right
g2.drawLine(cx + o, cy + o, cx + xx, cy + yy);
g2.setPaint(paintOld);
g2.setColor(tip);
if (sign == Sign.expand) {
// upper left
g2.drawLine(cx - xx, cy - yy, cx - xx + d, cy - yy);
g2.drawLine(cx - xx, cy - yy, cx - xx, cy - yy + d);
// upper right
g2.drawLine(cx + xx, cy - yy, cx + xx - d, cy - yy);
g2.drawLine(cx + xx, cy - yy, cx + xx, cy - yy + d);
// lower left
g2.drawLine(cx - xx, cy + yy, cx - xx + d, cy + yy);
g2.drawLine(cx - xx, cy + yy, cx - xx, cy + yy - d);
// lower right
g2.drawLine(cx + xx, cy + yy, cx + xx - d, cy + yy);
g2.drawLine(cx + xx, cy + yy, cx + xx, cy + yy - d);
} else {
// upper left
g2.drawLine(cx - o, cy - o, cx - o - d, cy - o);
g2.drawLine(cx - o, cy - o, cx - o, cy - o - d);
// upper right
g2.drawLine(cx + o, cy - o, cx + o + d, cy - o);
g2.drawLine(cx + o, cy - o, cx + o, cy - o - d);
// lower left
g2.drawLine(cx - o, cy + o, cx - o - d, cy + o);
g2.drawLine(cx - o, cy + o, cx - o, cy + o + d);
// lower right
g2.drawLine(cx + o, cy + o, cx + o + d, cy + o);
g2.drawLine(cx + o, cy + o, cx + o, cy + o + d);
}
g2.setStroke(strokeOld);
g2.setColor(colorOld);
g2.setPaint(paintOld);
}
use of java.awt.RadialGradientPaint in project vcell by virtualcell.
the class SpeciesToolShapeIcon method paintIcon.
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
if (c == null) {
return;
}
if (!(c instanceof JToolBarToggleButton)) {
return;
}
JToolBarToggleButton b = (JToolBarToggleButton) c;
Graphics2D g2 = (Graphics2D) g;
Color colorOld = g2.getColor();
Paint paintOld = g2.getPaint();
Stroke strokeOld = g2.getStroke();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// (diameter-circleDiameter) / 2
int xx = 2;
int yy = 2;
Color exterior, interior;
if (state == State.normal) {
exterior = Color.green.darker().darker();
interior = Color.white;
xx += x;
yy += y;
} else {
exterior = Color.green.darker();
interior = Color.white;
// button moves a little bit to simulate 3D pressing of a button
xx += x + 1;
yy += y + 1;
}
Ellipse2D e = new Ellipse2D.Double(xx, yy, circleDiameter, circleDiameter);
Point2D center = new Point2D.Float(xx + circleDiameter / 2, yy + circleDiameter / 2);
float radius = circleDiameter * 0.5f;
Point2D focus = new Point2D.Float(xx + circleDiameter / 2 - 2, yy + circleDiameter / 2 - 2);
float[] dist = { 0.1f, 1.0f };
Color[] colors = { interior, exterior };
RadialGradientPaint p = new RadialGradientPaint(center, radius, focus, dist, colors, CycleMethod.NO_CYCLE);
g2.setPaint(p);
g2.fill(e);
g.setColor(Color.black);
g2.draw(e);
g2.setStroke(strokeOld);
g2.setColor(colorOld);
g2.setPaint(paintOld);
}
use of java.awt.RadialGradientPaint in project vcell by virtualcell.
the class ZoomShapeIcon method paintIcon.
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
if (c == null) {
return;
}
if (!(c instanceof JButton)) {
return;
}
JButton b = (JButton) c;
int xPos = (b.getWidth() - diameter) / 2;
int yPos = (b.getHeight() - diameter) / 2 + 1;
Graphics2D g2 = (Graphics2D) g;
Color colorOld = g2.getColor();
Paint paintOld = g2.getPaint();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
Color interior = Color.white;
Color exterior;
Color signColor;
Color contour;
Color c1, c2;
if (sign == Sign.plus) {
c1 = SpeciesPatternLargeShape.componentGreen;
c2 = Color.green;
} else {
c1 = SpeciesPatternLargeShape.componentBad;
c2 = Color.red;
}
if (b.isEnabled()) {
if (state == State.normal) {
exterior = c1.darker();
signColor = c2.darker().darker().darker();
} else {
// same colors, brighter when button is pressed
exterior = c1;
signColor = c2.darker().darker();
}
contour = c1.darker().darker().darker();
} else {
// disabled
exterior = Color.lightGray;
signColor = Color.gray;
contour = Color.gray;
}
Point2D center = new Point2D.Float(xPos + diameter / 3, yPos + diameter / 3);
float radius = diameter * 0.5f;
Point2D focus = new Point2D.Float(xPos + diameter / 3 - 1, yPos + diameter / 3 - 1);
float[] dist = { 0.1f, 1.0f };
Color[] colors = { interior, exterior };
RadialGradientPaint p = new RadialGradientPaint(center, radius, focus, dist, colors, CycleMethod.NO_CYCLE);
g2.setPaint(p);
Ellipse2D circle = new Ellipse2D.Double(xPos, yPos, diameter, diameter);
g2.fill(circle);
Ellipse2D circle2 = new Ellipse2D.Double(xPos - 1, yPos - 1, diameter, diameter);
g2.setPaint(contour);
g2.draw(circle2);
// TODO: use diameter instead of hardcoded numbers for the horizontal and vertical lines
// offset left and right from center (for the vertical and orizontal lines)
int i = diameter / 4;
// center of circle
int cx = b.getWidth() / 2;
int cy = b.getHeight() / 2;
g2.setColor(signColor);
// horizontal bar of the '-' or '+' signs
g2.drawLine(cx - i - 1, cy - 1, cx + i - 1, cy - 1);
g2.drawLine(cx - i - 1, cy, cx + i - 1, cy);
g2.drawLine(cx - i - 1, cy + 1, cx + i - 1, cy + 1);
if (sign == Sign.plus) {
// draw the vertical bar of the '+' sign
// vertical
g2.drawLine(cx, cy - i, cx, cy + i);
g2.drawLine(cx - 1, cy - i, cx - 1, cy + i);
g2.drawLine(cx - 2, cy - i, cx - 2, cy + i);
}
g2.setColor(colorOld);
g2.setPaint(paintOld);
}
Aggregations