summaryrefslogtreecommitdiff
path: root/frontend/src/components/app/map/elements/TilePlusIcon.js
blob: 06377152d1b17d8757e1a8cc3b60f8996545574c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import PropTypes from "prop-types";
import React from "react";
import { Group, Line } from "react-konva";
import { TILE_PLUS_COLOR } from "../../../../util/colors";
import {
  TILE_PLUS_MARGIN_IN_PIXELS,
  TILE_PLUS_WIDTH_IN_PIXELS,
  TILE_SIZE_IN_PIXELS
} from "../MapConstants";

const TilePlusIcon = ({ pixelX, pixelY, mapScale }) => {
  const linePoints = [
    [
      pixelX + 0.5 * TILE_SIZE_IN_PIXELS * mapScale,
      pixelY + TILE_PLUS_MARGIN_IN_PIXELS * mapScale,
      pixelX + 0.5 * TILE_SIZE_IN_PIXELS * mapScale,
      pixelY +
        TILE_SIZE_IN_PIXELS * mapScale -
        TILE_PLUS_MARGIN_IN_PIXELS * mapScale
    ],
    [
      pixelX + TILE_PLUS_MARGIN_IN_PIXELS * mapScale,
      pixelY + 0.5 * TILE_SIZE_IN_PIXELS * mapScale,
      pixelX +
        TILE_SIZE_IN_PIXELS * mapScale -
        TILE_PLUS_MARGIN_IN_PIXELS * mapScale,
      pixelY + 0.5 * TILE_SIZE_IN_PIXELS * mapScale
    ]
  ];
  return (
    <Group>
      {linePoints.map((points, index) => (
        <Line
          key={index}
          points={points}
          lineCap="round"
          stroke={TILE_PLUS_COLOR}
          strokeWidth={TILE_PLUS_WIDTH_IN_PIXELS * mapScale}
          listening={false}
        />
      ))}
    </Group>
  );
};

TilePlusIcon.propTypes = {
  pixelX: PropTypes.number,
  pixelY: PropTypes.number,
  mapScale: PropTypes.number
};

export default TilePlusIcon;