xref: /plugin/combo/vendor/php-webdriver/webdriver/lib/WebDriverPoint.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau
3*04fd306cSNickeaunamespace Facebook\WebDriver;
4*04fd306cSNickeau
5*04fd306cSNickeau/**
6*04fd306cSNickeau * Represent a point.
7*04fd306cSNickeau */
8*04fd306cSNickeauclass WebDriverPoint
9*04fd306cSNickeau{
10*04fd306cSNickeau    private $x;
11*04fd306cSNickeau    private $y;
12*04fd306cSNickeau
13*04fd306cSNickeau    public function __construct($x, $y)
14*04fd306cSNickeau    {
15*04fd306cSNickeau        $this->x = $x;
16*04fd306cSNickeau        $this->y = $y;
17*04fd306cSNickeau    }
18*04fd306cSNickeau
19*04fd306cSNickeau    /**
20*04fd306cSNickeau     * Get the x-coordinate.
21*04fd306cSNickeau     *
22*04fd306cSNickeau     * @return int The x-coordinate of the point.
23*04fd306cSNickeau     */
24*04fd306cSNickeau    public function getX()
25*04fd306cSNickeau    {
26*04fd306cSNickeau        return (int) $this->x;
27*04fd306cSNickeau    }
28*04fd306cSNickeau
29*04fd306cSNickeau    /**
30*04fd306cSNickeau     * Get the y-coordinate.
31*04fd306cSNickeau     *
32*04fd306cSNickeau     * @return int The y-coordinate of the point.
33*04fd306cSNickeau     */
34*04fd306cSNickeau    public function getY()
35*04fd306cSNickeau    {
36*04fd306cSNickeau        return (int) $this->y;
37*04fd306cSNickeau    }
38*04fd306cSNickeau
39*04fd306cSNickeau    /**
40*04fd306cSNickeau     * Set the point to a new position.
41*04fd306cSNickeau     *
42*04fd306cSNickeau     * @param int $new_x
43*04fd306cSNickeau     * @param int $new_y
44*04fd306cSNickeau     * @return WebDriverPoint The same instance with updated coordinates.
45*04fd306cSNickeau     */
46*04fd306cSNickeau    public function move($new_x, $new_y)
47*04fd306cSNickeau    {
48*04fd306cSNickeau        $this->x = $new_x;
49*04fd306cSNickeau        $this->y = $new_y;
50*04fd306cSNickeau
51*04fd306cSNickeau        return $this;
52*04fd306cSNickeau    }
53*04fd306cSNickeau
54*04fd306cSNickeau    /**
55*04fd306cSNickeau     * Move the current by offsets.
56*04fd306cSNickeau     *
57*04fd306cSNickeau     * @param int $x_offset
58*04fd306cSNickeau     * @param int $y_offset
59*04fd306cSNickeau     * @return WebDriverPoint The same instance with updated coordinates.
60*04fd306cSNickeau     */
61*04fd306cSNickeau    public function moveBy($x_offset, $y_offset)
62*04fd306cSNickeau    {
63*04fd306cSNickeau        $this->x += $x_offset;
64*04fd306cSNickeau        $this->y += $y_offset;
65*04fd306cSNickeau
66*04fd306cSNickeau        return $this;
67*04fd306cSNickeau    }
68*04fd306cSNickeau
69*04fd306cSNickeau    /**
70*04fd306cSNickeau     * Check whether the given point is the same as the instance.
71*04fd306cSNickeau     *
72*04fd306cSNickeau     * @param WebDriverPoint $point The point to be compared with.
73*04fd306cSNickeau     * @return bool Whether the x and y coordinates are the same as the instance.
74*04fd306cSNickeau     */
75*04fd306cSNickeau    public function equals(self $point)
76*04fd306cSNickeau    {
77*04fd306cSNickeau        return $this->x === $point->getX() &&
78*04fd306cSNickeau        $this->y === $point->getY();
79*04fd306cSNickeau    }
80*04fd306cSNickeau}
81