forked from eden-emu/eden
		
	hle: nvflinger: Add implementation for Rect class.
This commit is contained in:
		
							parent
							
								
									e3ee327a30
								
							
						
					
					
						commit
						fbd0e594ba
					
				
					 2 changed files with 76 additions and 0 deletions
				
			
		|  | @ -539,6 +539,7 @@ add_library(core STATIC | ||||||
|     hle/service/nvflinger/buffer_queue.h |     hle/service/nvflinger/buffer_queue.h | ||||||
|     hle/service/nvflinger/nvflinger.cpp |     hle/service/nvflinger/nvflinger.cpp | ||||||
|     hle/service/nvflinger/nvflinger.h |     hle/service/nvflinger/nvflinger.h | ||||||
|  |     hle/service/nvflinger/ui/rect.h | ||||||
|     hle/service/olsc/olsc.cpp |     hle/service/olsc/olsc.cpp | ||||||
|     hle/service/olsc/olsc.h |     hle/service/olsc/olsc.h | ||||||
|     hle/service/pcie/pcie.cpp |     hle/service/pcie/pcie.cpp | ||||||
|  |  | ||||||
							
								
								
									
										75
									
								
								src/core/hle/service/nvflinger/ui/rect.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								src/core/hle/service/nvflinger/ui/rect.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,75 @@ | ||||||
|  | // SPDX-License-Identifier: GPL-3.0-or-later
 | ||||||
|  | // Copyright 2021 yuzu Emulator Project
 | ||||||
|  | // Copyright 2006 The Android Open Source Project
 | ||||||
|  | // Parts of this implementation were base on:
 | ||||||
|  | // https://cs.android.com/android/platform/superproject/+/android-5.1.1_r38:frameworks/native/include/ui/Rect.h
 | ||||||
|  | 
 | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include <cstdint> | ||||||
|  | #include <utility> | ||||||
|  | 
 | ||||||
|  | #include "common/common_types.h" | ||||||
|  | 
 | ||||||
|  | namespace android { | ||||||
|  | 
 | ||||||
|  | class Rect final { | ||||||
|  | public: | ||||||
|  |     constexpr Rect() = default; | ||||||
|  | 
 | ||||||
|  |     constexpr Rect(s32 width_, s32 height_) : right{width_}, bottom{height_} {} | ||||||
|  | 
 | ||||||
|  |     constexpr s32 Left() const { | ||||||
|  |         return left; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     constexpr s32 Top() const { | ||||||
|  |         return top; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     constexpr s32 Right() const { | ||||||
|  |         return right; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     constexpr s32 Bottom() const { | ||||||
|  |         return bottom; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     constexpr bool IsEmpty() const { | ||||||
|  |         return (GetWidth() <= 0) || (GetHeight() <= 0); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     constexpr s32 GetWidth() const { | ||||||
|  |         return right - left; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     constexpr s32 GetHeight() const { | ||||||
|  |         return bottom - top; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     constexpr bool operator==(const Rect& rhs) const { | ||||||
|  |         return (left == rhs.left) && (top == rhs.top) && (right == rhs.right) && | ||||||
|  |                (bottom == rhs.bottom); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     constexpr bool operator!=(const Rect& rhs) const { | ||||||
|  |         return !operator==(rhs); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     constexpr bool Intersect(const Rect& with, Rect* result) const { | ||||||
|  |         result->left = std::max(left, with.left); | ||||||
|  |         result->top = std::max(top, with.top); | ||||||
|  |         result->right = std::min(right, with.right); | ||||||
|  |         result->bottom = std::min(bottom, with.bottom); | ||||||
|  |         return !result->IsEmpty(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  |     s32 left{}; | ||||||
|  |     s32 top{}; | ||||||
|  |     s32 right{}; | ||||||
|  |     s32 bottom{}; | ||||||
|  | }; | ||||||
|  | static_assert(sizeof(Rect) == 16, "Rect has wrong size"); | ||||||
|  | 
 | ||||||
|  | } // namespace android
 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 bunnei
						bunnei