亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gspoint.h

?? 連連看這個游戲都玩過吧
?? H
字號:
 // GsPoint.h: interface for the GsPoint class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_GSPOINT_H__AF147D06_1744_4086_801C_174E3B937E78__INCLUDED_)
#define AFX_GSPOINT_H__AF147D06_1744_4086_801C_174E3B937E78__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#pragma pack( push, 1)
// --------------------------------------------------------------------------
// TPoint2d class template - Represents a two dimensional point in screen
// coordinates.
// --------------------------------------------------------------------------
template < typename t_coord_arg >
struct GSLIB_API TPoint2d
{
public:
	// Types
	typedef t_coord_arg t_coord;

	// Data members
	t_coord	x;
	t_coord	y;

	// Constructors
	TPoint2d()																	:	x( 0 ),	y( 0 )	{ }
	TPoint2d( t_coord const & x_arg, t_coord const & y_arg )					:	x( x_arg ),	y( y_arg )	{	}

	template < typename t_other_coord >
	TPoint2d( TPoint2d< t_other_coord > const & other )							:	x( other.x ), y( other.y )	{	}

	TPoint2d( TPoint2d const & other )											:	x( other.x ), y( other.y )	{ }

	// Operators
	TPoint2d & operator+=( TPoint2d const & right )								{ x += right.x; y += right.y; return *this;	}
	TPoint2d & operator-=( TPoint2d const & right )								{ x -= right.x; y -= right.y; return *this;	}
	TPoint2d & operator*=( t_coord const & right )								{ x *= right; y *= right; return *this; }
	TPoint2d & operator/=( t_coord const & right )								{ x /= right;	y /= right; return *this;	}
	TPoint2d & operator%=( t_coord const & right )								{ x %= right;	y %= right; return *this;	}

	// Friend functions - defined inline to provide automatic intantiation
	friend bool operator==( TPoint2d const & left, TPoint2d const & right )	{ return left.x == right.x && left.y == right.y; }

	friend bool operator!=( TPoint2d const & left, TPoint2d const & right )	{ return !( left == right ); }

	friend TPoint2d operator+( TPoint2d const & point )	{ return point; }

	friend TPoint2d operator-( TPoint2d const & point )	{ return TPoint2d( -point.x, -point.y ); }

	friend TPoint2d operator+( TPoint2d const & left, TPoint2d const & right )	{ TPoint2d result( left ); return result += right; }

	friend TPoint2d operator-( TPoint2d const & left, TPoint2d const & right )	{ TPoint2d result( left ); return result -= right; }

	friend TPoint2d operator*( TPoint2d const & left, t_coord const & right )	{ TPoint2d result( left ); return result *= right; }

	friend TPoint2d operator*( t_coord const & left, TPoint2d const & right )	{ return right * left; }

	friend TPoint2d operator/( TPoint2d const & left, t_coord const & right )	{ TPoint2d result( left ); return result /= right; }

	friend TPoint2d operator%( TPoint2d const & left, t_coord const & right )	{ TPoint2d result( left ); return result %= right; }
};
//typedef TPoint2d POINT2;


// --------------------------------------------------------------------------
// TRect2d class template - Represents a two dimensional rectangle in
// screen coordinates.
// --------------------------------------------------------------------------

template < typename t_coord_arg >
struct GSLIB_API TRect2d
{
public:
	// Types
	typedef t_coord_arg				t_coord;
	typedef TPoint2d< t_coord >	t_point;

	// Data members
	t_coord	left;
	t_coord	top;
	t_coord	right;
	t_coord	bottom;



	// Constructors
	TRect2d()																											:	left( 0 ),	top( 0 ),	right( 0 ),	bottom( 0 )	{}
	TRect2d( t_coord const & left_arg, t_coord const & top_arg,	t_coord const & right_arg, t_coord const & bottom_arg )	:	left( left_arg ), top( top_arg ),		right( right_arg ),	bottom( bottom_arg ) { }
	TRect2d( t_point const & top_left, t_point const & size )															:	left( top_left.x ), top( top_left.y ), right( top_left.x + size.x ), bottom( top_left.y + size.y )	{ }

	template < typename t_other_coord >	TRect2d( TRect2d< t_other_coord > const & other )								:	left( other.left ),	top( other.top ), right( other.right ),	bottom( other.bottom )	{ }

	TRect2d( TRect2d const & other )																					:	left( other.left ), top( other.top ), right( other.right ),	bottom( other.bottom )	{ }

	// Member functions
	t_coord	height() const																								{ return bottom - top; }
	t_coord	width() const																								{ return right - left; }

	t_point	top_left() const																							{ return t_point( left, top ); }
	t_point	top_right() const																							{ return t_point( right, top );	}
	t_point	bottom_left() const																							{ return t_point( left, bottom ); }
	t_point	bottom_right() const																						{ return t_point( right, bottom ); }

	t_point	size() const																								{ return t_point( width(), height() ); }

	bool	contains( TRect2d const & arg ) const																		{ return		left <= arg.left &&	right >= arg.right &&	top <= arg.top	&&	bottom >= arg.bottom; }
                                              // true if rectangle entirely                 // contains arg.

	// Operators
	TRect2d & operator+=( t_point const & point )																		{ left += point.x; top += point.y; right += point.x; bottom += point.y;	return *this; }
	TRect2d & operator-=( t_point const & point )																		{ left -= point.x; top -= point.y; right -= point.x; bottom -= point.y; return *this; }
	TRect2d & operator*=( t_coord const & arg )																			{ left *= arg; top *= arg; right *= arg; bottom *= arg;	return *this; }
	TRect2d & operator/=( t_coord const & arg )																			{ left /= arg; top /= arg; right /= arg; bottom /= arg;	return *this; }

	// Friend functions - defined inline to provide automatic intantiation
	friend bool operator==( TRect2d const & left, TRect2d const & right )												{ return		left.left == right.left	&&	left.top == right.top && left.right == right.right	&&	left.bottom == right.bottom; }

	friend bool operator!=( TRect2d const & left, TRect2d const & right )												{ return !( left == right ); }

	friend TRect2d operator+( TRect2d const & left, t_point const & right )												{ TRect2d result( left ); return result += right; }

	friend TRect2d operator+( t_point const & left, TRect2d const & right )												{ return right + left; }

	friend TRect2d operator-( TRect2d const & left, t_point const & right )												{ TRect2d result( left ); return result -= right; }

	friend TRect2d operator*( TRect2d const & left, t_coord const & right )												{ TRect2d result( left ); return result *= right; }

	friend TRect2d operator*( t_coord const & left, TRect2d const & right )												{ return right * left; }

	friend TRect2d operator/( TRect2d const & left, t_coord const & right )												{ TRect2d result( left ); return result /= right; }
};
//typedef TRect2d RECT2;
// --------------------------------------------------------------------------
// Inline free functions for TRect2d
// --------------------------------------------------------------------------

template < typename t_coord >
inline GSLIB_API bool is_point_in_rect( TPoint2d< t_coord > const & point, TRect2d< t_coord > const & rect )						{ return		point.x >= rect.left &&	point.x < rect.right &&	point.y >= rect.top &&	point.y < rect.bottom; }

template < typename t_coord >
inline GSLIB_API bool is_normalized( TRect2d< t_coord > const & rect )															{ return rect.left <= rect.right && rect.top <= rect.bottom; }

template < typename t_coord >
inline GSLIB_API void normalize( TRect2d< t_coord > & rect )																		{ if ( rect.left > rect.right ) std::swap( rect.left, rect.right ); if ( rect.top > rect.bottom )std::swap( rect.top, rect.bottom ); }

template < typename t_coord >
inline GSLIB_API bool intersect( TRect2d< t_coord > const & first, TRect2d< t_coord > const & second )							{ return		first.left < second.right && second.left < first.right && first.top < second.bottom	&& second.top < first.bottom; }

template < typename t_coord >
inline GSLIB_API void assign_intersection( TRect2d< t_coord > & first, TRect2d< t_coord > const & second )						{ if ( second.left > first.left ) first.left = second.left; if ( second.top > first.top ) first.top = second.top; if ( second.right < first.right )first.right = second.right;	if ( second.bottom < first.bottom )first.bottom = second.bottom; }

template < typename t_coord >
inline GSLIB_API TRect2d< t_coord > intersection( TRect2d< t_coord > const & first, TRect2d< t_coord > const & second )			{ TRect2d< t_coord > result( first ); assign_intersection( result, second ); return result; }

template < typename t_coord >
inline GSLIB_API void assign_extent( TRect2d< t_coord > & first, TRect2d< t_coord > const & second )								{ if ( second.left < first.left ) first.left = second.left; if ( second.top < first.top )first.top = second.top;	if ( second.right > first.right )first.right = second.right; if ( second.bottom > first.bottom )first.bottom = second.bottom; }

template < typename t_coord >
inline GSLIB_API TRect2d< t_coord > get_extent( TRect2d< t_coord > const & first, TRect2d< t_coord > const & second )				{ TRect2d< t_coord > result( first );	assign_extent( result, second ); return result; }

// ---------------------------------------------------------------
// data structure for screen coordinates
// ---------------------------------------------------------------
struct GSLIB_API SScreenPoint : public POINT
{
//	int x;
//	int y;
	// Constructors
	SScreenPoint();
	SScreenPoint( int new_x, int new_y );
	SScreenPoint( TPoint2d< int > const & other );
	SScreenPoint( SScreenPoint const & other );

	// Operators
	SScreenPoint & operator+=( SScreenPoint const & right );
	SScreenPoint & operator-=( SScreenPoint const & right );
	SScreenPoint & operator*=( int right );
	SScreenPoint & operator/=( int right );
	SScreenPoint & operator%=( int right );
	SScreenPoint & operator<<=( int right );
	SScreenPoint & operator>>=( int right );


	operator TPoint2d< int >() const;
};
typedef SScreenPoint GPOINT;

// ---------------------------------------------------------------
// data structure for screen rectangles
// ---------------------------------------------------------------
struct GSLIB_API SScreenRect : public RECT
{
//	int		left;
//	int		top;
//	int		right;
//	int		bottom;
	// Constructors
	SScreenRect();
	SScreenRect( int left, int top, int right, int bottom );
	SScreenRect( SScreenPoint const & top_left, SScreenPoint const & size );
	SScreenRect( TRect2d< int > const & other );
	SScreenRect( SScreenRect const & other );

	// Member functions
	int height() const;
	int width() const;

	SScreenPoint top_left() const;
	SScreenPoint top_right() const;
	SScreenPoint bottom_left() const;
	SScreenPoint bottom_right() const;

	SScreenPoint size() const;

	bool           contains( SScreenRect const& arg ) const; // true if rectangle entirely
                                                               // contains arg.
	// Operators
	SScreenRect & operator+=( SScreenPoint const & point );
	SScreenRect & operator-=( SScreenPoint const & point );
	SScreenRect & operator*=( int arg );
	SScreenRect & operator/=( int arg );
	SScreenRect & operator<<=( int arg );
	SScreenRect & operator>>=( int arg );

	void expand(GPOINT pt);
	void expand(LONG size);

	void make_extern( SScreenRect const & rect );
	void make_clipper( SScreenRect const & rect );
	//void make_fit( SScreenRect const & rect );
	void make_room( SScreenRect const & rect );

	operator TRect2d< int >() const;
};
typedef SScreenRect GRECT;

// ---------------------------------------------------------------
// inline SScreenRect free functions
// ---------------------------------------------------------------
inline GSLIB_API bool  operator==( SScreenRect const & left, SScreenRect const & right );

inline GSLIB_API bool operator!=( SScreenRect const & left, SScreenRect const & right );

inline GSLIB_API SScreenRect operator+( SScreenRect const & left, SScreenPoint const & right );

inline GSLIB_API SScreenRect operator+( SScreenPoint const & left, SScreenRect const & right );

inline GSLIB_API SScreenRect operator-( SScreenRect const & left, SScreenPoint const & right );

inline GSLIB_API SScreenRect operator*( SScreenRect const & left, int right );

inline GSLIB_API SScreenRect operator*( int left, SScreenRect const & right );

inline GSLIB_API SScreenRect operator/( SScreenRect const & left, int right );

inline GSLIB_API SScreenRect operator<<( SScreenRect const & left, int right );

inline GSLIB_API SScreenRect operator>>( SScreenRect const & left, int right );

inline GSLIB_API bool is_point_in_rect( SScreenPoint const & point, SScreenRect const & rect );

inline GSLIB_API bool is_normalized( SScreenRect const & rect );

inline GSLIB_API void normalize( SScreenRect & rect );

inline GSLIB_API bool intersect( SScreenRect const & left, SScreenRect const & right );

inline GSLIB_API SScreenRect intersection( SScreenRect const & left, SScreenRect const & right );

inline GSLIB_API SScreenRect get_extent( SScreenRect const& left, SScreenRect const& right );

inline GSLIB_API std::streambuf & operator<<( std::streambuf & stream, SScreenRect const & rect );

inline GSLIB_API std::streambuf & operator>>( std::streambuf & stream, SScreenRect & rect );




typedef std::list<SScreenRect>				GRECTLIST;


typedef TPoint2d<FLOAT>				FPOINT;
typedef TRect2d<FLOAT>				FRECT;


struct GSLIB_API SCoordinateFilter
{
	GPOINT	base_point;
	float	rotate_angle;
	float	width_scale;
	float	height_scale;
};



#pragma pack(pop)





#endif // !defined(AFX_GSPOINT_H__AF147D06_1744_4086_801C_174E3B937E78__INCLUDED_)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久综合| 精品欧美一区二区三区精品久久 | 亚洲裸体在线观看| 中文字幕亚洲欧美在线不卡| 日韩区在线观看| 3d动漫精品啪啪| 欧美不卡在线视频| 欧美图片一区二区三区| 蜜桃一区二区三区在线观看| 午夜免费欧美电影| 日韩精品在线一区| 国产成人精品一区二| 日本强好片久久久久久aaa| 日韩精品一级中文字幕精品视频免费观看| 亚洲精品国产a久久久久久| 天天av天天翘天天综合网色鬼国产 | 美国欧美日韩国产在线播放| 高清视频一区二区| 午夜影院久久久| 久久99精品国产91久久来源| 一本一本久久a久久精品综合麻豆| 国产精品三级电影| 国产精品性做久久久久久| 99精品黄色片免费大全| 国产成人av网站| 色婷婷久久久综合中文字幕| 国产精品日韩精品欧美在线| 美女视频一区在线观看| 欧美美女黄视频| 亚洲色图丝袜美腿| 国产成人综合自拍| 日韩丝袜美女视频| 美女视频黄a大片欧美| 色香蕉成人二区免费| 亚洲日本在线天堂| 91精品办公室少妇高潮对白| 国产精品久久久久婷婷二区次| 成人深夜视频在线观看| 国产欧美日韩综合| 成人精品国产免费网站| 国产精品久久毛片| 91麻豆精品视频| 亚洲男女一区二区三区| 欧美亚洲综合色| 天堂午夜影视日韩欧美一区二区| 欧美日本国产视频| 久久精品久久久精品美女| 欧美不卡一二三| 懂色av中文字幕一区二区三区| 2021国产精品久久精品| 国产一区二区三区美女| 欧美日韩综合在线免费观看| 国产一区二区精品久久| 国产欧美日韩另类一区| 视频一区二区国产| 97久久人人超碰| 国产精品乱码妇女bbbb| 老司机午夜精品| 欧美大黄免费观看| 麻豆精品视频在线观看视频| 欧美日韩和欧美的一区二区| 另类小说视频一区二区| 久久久蜜桃精品| 男女激情视频一区| 51午夜精品国产| 久久99国产乱子伦精品免费| 久久精品欧美一区二区三区不卡 | 国产精品麻豆视频| 91在线精品一区二区三区| 亚洲国产一区二区三区青草影视| 欧美日韩不卡视频| 风间由美性色一区二区三区| 伊人一区二区三区| 亚洲精品在线电影| 色老综合老女人久久久| 韩国三级在线一区| 亚洲国产精品久久人人爱蜜臀| 久久精品视频网| 欧美精品高清视频| 91丝袜国产在线播放| 国产毛片精品国产一区二区三区| 一区二区三区91| 中文字幕av一区 二区| 欧美一二三在线| 欧美午夜寂寞影院| 99久久精品国产精品久久| 国产在线精品一区二区不卡了| 一二三区精品视频| 亚洲视频1区2区| 国产精品乱人伦一区二区| 久久久久亚洲蜜桃| 久久欧美一区二区| 日韩亚洲欧美在线| 欧美日韩视频在线第一区 | 欧美老人xxxx18| 欧美日韩在线直播| 欧美在线啊v一区| 欧美中文字幕久久| 欧美最猛性xxxxx直播| 91社区在线播放| 色综合久久88色综合天天| 99久久久精品| 99精品欧美一区二区三区小说| 成人av在线播放网站| 99re热视频精品| 欧美日韩久久不卡| 91麻豆精品91久久久久同性| 日韩三级视频在线看| 欧美大黄免费观看| 欧美国产国产综合| 亚洲欧洲日本在线| 亚洲乱码国产乱码精品精小说| 亚洲精品国产一区二区三区四区在线| 中文字幕av一区二区三区高| 亚洲欧美色综合| 麻豆精品国产91久久久久久| 国产一区视频在线看| 99在线精品视频| 7777精品伊人久久久大香线蕉超级流畅 | 日韩欧美电影一区| 国产夜色精品一区二区av| 国产日韩一级二级三级| 樱桃国产成人精品视频| 日韩av电影天堂| 成人精品国产福利| 欧美一区二区三区婷婷月色| 日韩视频永久免费| 亚洲欧美综合网| 狠狠色丁香婷综合久久| 91国偷自产一区二区开放时间| 2021久久国产精品不只是精品| 国产色综合一区| 美美哒免费高清在线观看视频一区二区 | 九九视频精品免费| 在线亚洲欧美专区二区| 国产欧美日韩视频在线观看| 美女网站色91| 欧美日韩黄色一区二区| 中文字幕日韩一区| 精品一区二区免费在线观看| 欧美日韩在线综合| 国产精品久久久久影院色老大| 免费av成人在线| 欧美久久一区二区| 亚洲欧美激情插| 国产馆精品极品| 久久亚洲精华国产精华液 | av高清久久久| 久久精品亚洲精品国产欧美kt∨| 天天综合色天天综合| 色播五月激情综合网| 亚洲人成在线播放网站岛国| 99久久精品国产麻豆演员表| 国产精品免费人成网站| 成人免费视频视频在线观看免费| xvideos.蜜桃一区二区| 激情五月激情综合网| 欧美精品一区二区三区视频| 中文字幕亚洲一区二区av在线 | 成人avav在线| 久久精品亚洲一区二区三区浴池| 九一久久久久久| 中文字幕不卡三区| 在线日韩国产精品| 日韩中文字幕麻豆| 26uuu亚洲| 色综合久久88色综合天天| 亚洲电影中文字幕在线观看| 日韩视频免费观看高清完整版| 精品一区在线看| 亚洲精品免费看| 日韩欧美色电影| 成人动漫一区二区三区| 一区二区三区毛片| 精品剧情在线观看| 91国产免费观看| 韩国成人在线视频| 亚洲一区在线免费观看| 久久精品在线观看| 97超碰欧美中文字幕| 天堂一区二区在线免费观看| 亚洲国产精品高清| 欧美精品久久一区二区三区| 成人av资源下载| 久久成人18免费观看| 亚洲一区二区三区四区五区中文| 2021中文字幕一区亚洲| 欧美美女激情18p| 色婷婷av久久久久久久| 国产资源在线一区| 蜜臀精品久久久久久蜜臀| 亚洲精品成人a在线观看| 国产色91在线| 久久亚洲欧美国产精品乐播| 欧美日高清视频| 色综合中文字幕| 国产成人午夜精品影院观看视频| 日本午夜精品一区二区三区电影| 亚洲欧美一区二区三区国产精品 | 亚洲欧洲精品成人久久奇米网 |