mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-20 07:11:12 -06:00 
			
		
		
		
	Measure: Initial porting of Measure Gizmo
This commit is contained in:
		
							parent
							
								
									1561d65712
								
							
						
					
					
						commit
						f72d42f920
					
				
					 31 changed files with 5276 additions and 146 deletions
				
			
		|  | @ -1,7 +1,12 @@ | |||
| ///|/ Copyright (c) Prusa Research 2019 - 2023 Enrico Turri @enricoturri1966, Oleksandra Iushchenko @YuSanka, Filip Sykala @Jony01, Lukáš Matěna @lukasmatena, Vojtěch Bubník @bubnikv
 | ||||
| ///|/
 | ||||
| ///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
 | ||||
| ///|/
 | ||||
| #ifndef slic3r_GUI_Selection_hpp_ | ||||
| #define slic3r_GUI_Selection_hpp_ | ||||
| 
 | ||||
| #include "libslic3r/Geometry.hpp" | ||||
| #include "GUI_Geometry.hpp" | ||||
| #include "GLModel.hpp" | ||||
| 
 | ||||
| #include <set> | ||||
|  | @ -26,58 +31,6 @@ using ModelObjectPtrs = std::vector<ModelObject*>; | |||
| 
 | ||||
| 
 | ||||
| namespace GUI { | ||||
| class TransformationType | ||||
| { | ||||
| public: | ||||
|     enum Enum { | ||||
|         // Transforming in a world coordinate system
 | ||||
|         World = 0, | ||||
|         // Transforming in a local coordinate system
 | ||||
|         Local = 1, | ||||
|         // Absolute transformations, allowed in local coordinate system only.
 | ||||
|         Absolute = 0, | ||||
|         // Relative transformations, allowed in both local and world coordinate system.
 | ||||
|         Relative = 2, | ||||
|         // For group selection, the transformation is performed as if the group made a single solid body.
 | ||||
|         Joint = 0, | ||||
|         // For group selection, the transformation is performed on each object independently.
 | ||||
|         Independent = 4, | ||||
| 
 | ||||
|         World_Relative_Joint = World | Relative | Joint, | ||||
|         World_Relative_Independent = World | Relative | Independent, | ||||
|         Local_Absolute_Joint = Local | Absolute | Joint, | ||||
|         Local_Absolute_Independent = Local | Absolute | Independent, | ||||
|         Local_Relative_Joint = Local | Relative | Joint, | ||||
|         Local_Relative_Independent = Local | Relative | Independent, | ||||
|     }; | ||||
| 
 | ||||
|     TransformationType() : m_value(World) {} | ||||
|     TransformationType(Enum value) : m_value(value) {} | ||||
|     TransformationType& operator=(Enum value) { m_value = value; return *this; } | ||||
| 
 | ||||
|     Enum operator()() const { return m_value; } | ||||
|     bool has(Enum v) const { return ((unsigned int)m_value & (unsigned int)v) != 0; } | ||||
| 
 | ||||
|     void set_world()        { this->remove(Local); } | ||||
|     void set_local()        { this->add(Local); } | ||||
|     void set_absolute()     { this->remove(Relative); } | ||||
|     void set_relative()     { this->add(Relative); } | ||||
|     void set_joint()        { this->remove(Independent); } | ||||
|     void set_independent()  { this->add(Independent); } | ||||
| 
 | ||||
|     bool world()        const { return !this->has(Local); } | ||||
|     bool local()        const { return this->has(Local); } | ||||
|     bool absolute()     const { return !this->has(Relative); } | ||||
|     bool relative()     const { return this->has(Relative); } | ||||
|     bool joint()        const { return !this->has(Independent); } | ||||
|     bool independent()  const { return this->has(Independent); } | ||||
| 
 | ||||
| private: | ||||
|     void add(Enum v) { m_value = Enum((unsigned int)m_value | (unsigned int)v); } | ||||
|     void remove(Enum v) { m_value = Enum((unsigned int)m_value & (~(unsigned int)v)); } | ||||
| 
 | ||||
|     Enum    m_value; | ||||
| }; | ||||
| 
 | ||||
| class Selection | ||||
| { | ||||
|  | @ -307,6 +260,8 @@ public: | |||
|     bool contains_all_volumes(const std::vector<unsigned int>& volume_idxs) const; | ||||
|     // returns true if the selection contains at least one of the given indices
 | ||||
|     bool contains_any_volume(const std::vector<unsigned int>& volume_idxs) const; | ||||
|     // returns true if the selection contains any sinking volume
 | ||||
|     bool contains_sinking_volumes(bool ignore_modifiers = true) const; | ||||
|     // returns true if the selection contains all and only the given indices
 | ||||
|     bool matches(const std::vector<unsigned int>& volume_idxs) const; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 enricoturri1966
						enricoturri1966