blob: d938d63fc926ee8cc8b92420d1ab44ac1827994c [file] [log] [blame]
Constantin Kaplinsky23c60222008-06-04 03:58:07 +00001/* Copyright (C) 2006-2008 Constantin Kaplinsky. All Rights Reserved.
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +00002 *
3 * This is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation; either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This software is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this software; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16 * USA.
17 */
18
19//
20// Geometry.h
21//
22
23#ifndef __GEOMETRY_H__
24#define __GEOMETRY_H__
25
Constantin Kaplinsky23c60222008-06-04 03:58:07 +000026#include <rfb/Rect.h>
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000027#include <rfb/Configuration.h>
28
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000029class Geometry
30{
31public:
32 Geometry(int fullWidth, int fullHeight);
Peter Åstrand (astrand)242c5b22018-03-07 13:00:47 +010033 void recalc(int fullWidth, int fullHeight);
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000034
Constantin Kaplinsky6b5b8782008-09-02 10:33:23 +000035 // Return coordinates and dimensions that specify a rectangular part
36 // of the desktop that would be shown to RFB clients. This
37 // information is extracted in the constructor from the "Geometry"
38 // parameter.
Constantin Kaplinsky23c60222008-06-04 03:58:07 +000039 int width() const { return m_rect.width(); }
40 int height() const { return m_rect.height(); }
41 int offsetLeft() const { return m_rect.tl.x; }
42 int offsetTop() const { return m_rect.tl.y; }
Constantin Kaplinsky6b5b8782008-09-02 10:33:23 +000043
44 // Return the same information as a Rect structure.
Peter Åstrand (astrand)f523ee12017-10-09 14:59:24 +020045 const rfb::Rect& getRect() const { return m_rect; }
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000046
47protected:
Constantin Kaplinsky63a8f372008-08-20 08:45:29 +000048 // Parse a string, extract size and coordinates,
49 // and return that rectangle clipped to m_rect.
Peter Åstrand (astrand)f523ee12017-10-09 14:59:24 +020050 rfb::Rect parseString(const char *arg) const;
Constantin Kaplinsky5120e5e2008-08-20 06:04:57 +000051
Peter Åstrand (astrand)f523ee12017-10-09 14:59:24 +020052 static rfb::StringParameter m_geometryParam;
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000053
Constantin Kaplinsky6d085f12008-08-20 09:54:32 +000054 int m_fullWidth;
55 int m_fullHeight;
Peter Åstrand (astrand)f523ee12017-10-09 14:59:24 +020056 rfb::Rect m_rect;
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000057};
58
59#endif // __GEOMETRY_H__
60