2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.nanoleaf.internal.layout.shape;
15 import java.awt.Color;
16 import java.awt.Graphics2D;
17 import java.util.Arrays;
18 import java.util.List;
20 import org.eclipse.jdt.annotation.NonNullByDefault;
21 import org.openhab.binding.nanoleaf.internal.layout.DrawingSettings;
22 import org.openhab.binding.nanoleaf.internal.layout.ImagePoint2D;
23 import org.openhab.binding.nanoleaf.internal.layout.PanelState;
24 import org.openhab.binding.nanoleaf.internal.layout.Point2D;
25 import org.openhab.binding.nanoleaf.internal.layout.ShapeType;
26 import org.openhab.core.library.types.HSBType;
29 * A shape without any area.
31 * @author Jørgen Austvik - Initial contribution
34 public class Point extends Panel {
36 private static final int POINT_DIAMETER = 4;
38 private final Point2D position;
39 private final int panelId;
41 public Point(ShapeType shapeType, int panelId, Point2D position) {
43 this.position = position;
44 this.panelId = panelId;
48 public List<Point2D> generateOutline() {
49 return Arrays.asList(position);
53 public void draw(Graphics2D graphics, DrawingSettings settings, PanelState state) {
54 ImagePoint2D pos = settings.generateImagePoint(position);
56 if (settings.shouldFillWithColor()) {
57 HSBType color = state.getHSBForPanel(panelId);
58 graphics.setColor(new Color(color.getRGB()));
59 graphics.fillOval(pos.getX(), pos.getY(), POINT_DIAMETER, POINT_DIAMETER);
62 if (settings.shouldDrawOutline()) {
63 graphics.setColor(settings.getOutlineColor());
64 graphics.drawOval(pos.getX(), pos.getY(), POINT_DIAMETER, POINT_DIAMETER);
67 if (settings.shouldDrawLabels()) {
68 graphics.setColor(settings.getLabelColor());
69 graphics.drawString(Integer.toString(panelId), pos.getX(), pos.getY());