⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfbregion.h

📁 realvnc是一个非常流行的远程控制程序
💻 H
字号:
//  Copyright (C) 2002-2003 RealVNC Ltd. All Rights Reserved.////  This program is free software; you can redistribute it and/or modify//  it under the terms of the GNU General Public License as published by//  the Free Software Foundation; either version 2 of the License, or//  (at your option) any later version.////  This program is distributed in the hope that it will be useful,//  but WITHOUT ANY WARRANTY; without even the implied warranty of//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//  GNU General Public License for more details.////  You should have received a copy of the GNU General Public License//  along with this program; if not, write to the Free Software//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,//  USA.//// If the source code for the program is not available from the place from// which you received this file, check http://www.realvnc.com/ or contact// the authors on info@realvnc.com for information on obtaining it.#define USE_X11_REGIONS#ifdef USE_X11_REGIONS#include "rfbRegion_X11.h"#else#ifdef WIN32#include "rfbRegion_win32.h"#else#error "using custom region code"// rfb::Region and rfb::Region2D classes#ifndef __RFB_REGION_INCLUDED__#define __RFB_REGION_INCLUDED__#include "rfbRect.h"#include <vector>namespace rfb {	struct Span;	// rfb::Region	//	// The Region class is used to represent N-dimensional	// regions. 	// Each Region is a one-dimensional collection of	// non-overlapping Spans.  Each span may itself contain	// a child Region, thus allowing multi-dimensional	// regions to be expressed.	//	// Regions may be infinite, empty or non-empty.	class Region {	public:		Region(bool infinite_=false);		Region(int start, int end, const Region &sub);		Region intersect(const Region &src) const {			Region tmp; do_intersect(tmp, src); return tmp;		}		Region union_(const Region &src) const {			Region tmp; do_union_(tmp, src); return tmp;		}		Region subtract(const Region &src) const {			Region tmp; do_subtract(tmp, src); return tmp;		}		void translate(const int offset);		void reset(int start, int end, const Region &subspans);		void clear();		bool equals(const Region &b) const;		bool is_empty() const {return spans.empty() && !infinite;};		bool is_infinite() const {return infinite;};		const std::vector<Span> &get_spans() const {return spans;};		Span get_extent() const;		void debug_print(const char *prefix) const;	protected:		void do_intersect(Region &dest, const Region &src) const;		void do_union_(Region &dest, const Region &src) const;		void do_subtract(Region &dest, const Region &src) const;	protected:		bool infinite;		std::vector<Span> spans;	};	class Region2D : public Region {	public:		Region2D();		Region2D(int x1, int y1, int x2, int y2);		Region2D(const Rect &r);		Region2D intersect(const Region2D &src) const {			Region2D tmp; do_intersect(tmp, src); return tmp;		}		Region2D union_(const Region2D &src) const {			Region2D tmp; do_union_(tmp, src); return tmp;		}		Region2D subtract(const Region2D &src) const {			Region2D tmp; do_subtract(tmp, src); return tmp;		}		void reset(int x1, int y1, int x2, int y2);		void translate(const rfb::Point &p);		bool get_rects(rfb::RectVector &rects, bool left2right, bool topdown) const;		Rect get_bounding_rect() const;	};	struct Span {		Span() : start(0), end(0) {};		Span(int start, int end, const Region &r);		bool equals(const Span &b) const;		void append_to(std::vector<Span> &spans) const;		int start;		int end;		Region subspans;	};	typedef std::vector<Span> SpanVector;};#endif // __RFB_REGION_INCLUDED__#endif // WIN32#endif // X11

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -