/* * Copyright (c) 2010-2016, Sikuli.org, sikulix.com * Released under the MIT License. * */ /** * */ package org.sikuli.guide; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.Stroke; import java.awt.geom.Ellipse2D; import org.sikuli.basics.Debug; import org.sikuli.script.Region; public class SxCircle extends Visual { public SxCircle(Region region) { super(); init(region); } public SxCircle(Visual comp) { super(); init(comp.getRegion()); } public SxCircle() { super(); init(null); } private void init(Region region) { if (region != null) { targetRegion = region; } else { Debug.log(2, "SikuliGuideRectangle: targetRegion is given as null"); targetRegion = Region.create(0, 0, 2*stroke, 2*stroke); } setColor(Color.RED); } @Override public void updateComponent() { setActualBounds(getTarget().getRect()); setForeground(colorFront); super.setLocationRelative(Layout.OVER); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Stroke pen = new BasicStroke((float) stroke); g2d.setStroke(pen); Rectangle r = new Rectangle(getActualBounds()); r.grow(-(stroke-1), -(stroke-1)); g2d.translate(stroke-1, stroke-1); Ellipse2D.Double ellipse = new Ellipse2D.Double(0, 0, r.width - 1, r.height - 1); g2d.draw(ellipse); } }