blob: 82da9c6ef3b613f5229e1a6fb266e62b66f7971a [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 Kaplinsky23c60222008-06-04 03:58:07 +000036 int width() const { return m_rect.width(); }
37 int height() const { return m_rect.height(); }
38 int offsetLeft() const { return m_rect.tl.x; }
39 int offsetTop() const { return m_rect.tl.y; }
Constantin Kaplinsky23c60222008-06-04 03:58:07 +000040 const Rect& getRect() const { return m_rect; }
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000041
Constantin Kaplinsky6d085f12008-08-20 09:54:32 +000042 bool isVideoAreaSet() const { return !m_videoRect.is_empty(); }
43 const Rect& getVideoRect() const { return m_videoRect; }
44
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000045protected:
Constantin Kaplinsky63a8f372008-08-20 08:45:29 +000046 // Parse a string, extract size and coordinates,
47 // and return that rectangle clipped to m_rect.
Constantin Kaplinsky5120e5e2008-08-20 06:04:57 +000048 Rect parseString(const char *arg) const;
49
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000050 static StringParameter m_geometryParam;
Constantin Kaplinsky6d085f12008-08-20 09:54:32 +000051 static StringParameter m_videoAreaParam;
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000052
Constantin Kaplinsky6d085f12008-08-20 09:54:32 +000053 int m_fullWidth;
54 int m_fullHeight;
Constantin Kaplinsky23c60222008-06-04 03:58:07 +000055 Rect m_rect;
Constantin Kaplinsky6d085f12008-08-20 09:54:32 +000056 Rect m_videoRect;
Constantin Kaplinskyb30ae7f2006-05-25 05:04:46 +000057};
58
59#endif // __GEOMETRY_H__
60