50 lines
		
	
	
		
			942 B
		
	
	
	
		
			C++
		
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			942 B
		
	
	
	
		
			C++
		
	
	
	
|  | #include "..\e2dutil.h"
 | ||
|  | 
 | ||
|  | 
 | ||
|  | e2d::Transform::Transform() | ||
|  | 	: position() | ||
|  | 	, size() | ||
|  | 	, scale_x(1.f) | ||
|  | 	, scale_y(1.f) | ||
|  | 	, rotation(0) | ||
|  | 	, skew_x(0) | ||
|  | 	, skew_y(0) | ||
|  | 	, pivot_x(0) | ||
|  | 	, pivot_y(0) | ||
|  | { | ||
|  | } | ||
|  | 
 | ||
|  | e2d::Transform::operator D2D1::Matrix3x2F() const | ||
|  | { | ||
|  | 	auto pivot = D2D1::Point2F(size.width * pivot_x, size.height * pivot_y); | ||
|  | 	auto matrix = D2D1::Matrix3x2F::Scale( | ||
|  | 		scale_x, | ||
|  | 		scale_y, | ||
|  | 		pivot | ||
|  | 	) * D2D1::Matrix3x2F::Skew( | ||
|  | 		skew_x, | ||
|  | 		skew_y, | ||
|  | 		pivot | ||
|  | 	) * D2D1::Matrix3x2F::Rotation( | ||
|  | 		rotation, | ||
|  | 		pivot | ||
|  | 	) * D2D1::Matrix3x2F::Translation( | ||
|  | 		position.x - pivot.x, | ||
|  | 		position.y - pivot.y | ||
|  | 	); | ||
|  | 	return std::move(matrix); | ||
|  | } | ||
|  | 
 | ||
|  | bool e2d::Transform::operator==(const Transform & other) const | ||
|  | { | ||
|  | 	return position == other.position && | ||
|  | 		size == other.size && | ||
|  | 		scale_x == other.scale_x && | ||
|  | 		scale_y == other.scale_y && | ||
|  | 		skew_x == other.skew_x && | ||
|  | 		skew_y == other.skew_y && | ||
|  | 		rotation == other.rotation && | ||
|  | 		pivot_x == other.pivot_x && | ||
|  | 		pivot_y == other.pivot_y; | ||
|  | } |