blob: 9caeebae46d95d52bb9cd3c312cf63e919f6a84d [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
29using namespace rfb;
30
31class Geometry
32{
33public:
34 Geometry(int fullWidth, int fullHeight);
35
Constantin Kaplinsky6b5b8782008-09-02 10:33:23 +000036 // Return coordinates and dimensions that specify a rectangular part
37 // of the desktop that would be shown to RFB clients. This
38 // information is extracted in the constructor from the "Geometry"
39 // parameter.
Constantin Kaplinsky23c60222008-06-04 03:58:07 +000040 int width() const { return m_rect.width(); }
41 int height() const { return m_rect.height(); }
42 int offsetLeft() const { return m_rect.tl.x; }
43 int offsetTop() const { return m_rect.tl.y; }
Constantin Kaplinsky6b5b8782008-09-02 10:33:23 +000044
45 // Return the same information as a Rect structure.
Constantin Kaplinsky23c60222008-06-04 03:58:07 +000046 const Rect& getRect() const { return m_rect; }
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000047
48protected:
Constantin Kaplinsky63a8f372008-08-20 08:45:29 +000049 // Parse a string, extract size and coordinates,
50 // and return that rectangle clipped to m_rect.
Constantin Kaplinsky5120e5e2008-08-20 06:04:57 +000051 Rect parseString(const char *arg) const;
52
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000053 static StringParameter m_geometryParam;
54
Constantin Kaplinsky6d085f12008-08-20 09:54:32 +000055 int m_fullWidth;
56 int m_fullHeight;
Constantin Kaplinsky23c60222008-06-04 03:58:07 +000057 Rect m_rect;
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000058};
59
60#endif // __GEOMETRY_H__
61