mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 12:11:15 -06:00 
			
		
		
		
	Fixed minor regression
This commit is contained in:
		
							parent
							
								
									d452a16ba8
								
							
						
					
					
						commit
						a4eef93950
					
				
					 4 changed files with 9 additions and 6 deletions
				
			
		|  | @ -209,7 +209,7 @@ ConfigBase::set(t_config_option_key opt_key, SV* value) { | |||
|             optv->values.push_back(std::string(SvPV_nolen(*elem), SvCUR(*elem))); | ||||
|         } | ||||
|     } else if (ConfigOptionPoint* optv = dynamic_cast<ConfigOptionPoint*>(opt)) { | ||||
|         return optv->point.from_SV(value); | ||||
|         return optv->point.from_SV_check(value); | ||||
|     } else if (ConfigOptionPoints* optv = dynamic_cast<ConfigOptionPoints*>(opt)) { | ||||
|         std::vector<Pointf> values; | ||||
|         AV* av = (AV*)SvRV(value); | ||||
|  | @ -217,7 +217,7 @@ ConfigBase::set(t_config_option_key opt_key, SV* value) { | |||
|         for (size_t i = 0; i < len; i++) { | ||||
|             SV** elem = av_fetch(av, i, 0); | ||||
|             Pointf point; | ||||
|             if (elem == NULL || !point.from_SV(*elem)) return false; | ||||
|             if (elem == NULL || !point.from_SV_check(*elem)) return false; | ||||
|             values.push_back(point); | ||||
|         } | ||||
|         optv->values = values; | ||||
|  |  | |||
|  | @ -306,15 +306,16 @@ Pointf::from_SV(SV* point_sv) | |||
|     return true; | ||||
| } | ||||
| 
 | ||||
| void | ||||
| bool | ||||
| Pointf::from_SV_check(SV* point_sv) | ||||
| { | ||||
|     if (sv_isobject(point_sv) && (SvTYPE(SvRV(point_sv)) == SVt_PVMG)) { | ||||
|         if (!sv_isa(point_sv, perl_class_name(this)) && !sv_isa(point_sv, perl_class_name_ref(this))) | ||||
|             CONFESS("Not a valid %s object (got %s)", perl_class_name(this), HvNAME(SvSTASH(SvRV(point_sv)))); | ||||
|         *this = *(Pointf*)SvIV((SV*)SvRV( point_sv )); | ||||
|         return true; | ||||
|     } else { | ||||
|         this->from_SV(point_sv); | ||||
|         return this->from_SV(point_sv); | ||||
|     } | ||||
| } | ||||
| #endif | ||||
|  |  | |||
|  | @ -75,7 +75,7 @@ class Pointf | |||
|      | ||||
|     #ifdef SLIC3RXS | ||||
|     bool from_SV(SV* point_sv); | ||||
|     void from_SV_check(SV* point_sv); | ||||
|     bool from_SV_check(SV* point_sv); | ||||
|     SV* to_SV_pureperl() const; | ||||
|     #endif | ||||
| }; | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ use strict; | |||
| use warnings; | ||||
| 
 | ||||
| use Slic3r::XS; | ||||
| use Test::More tests => 105; | ||||
| use Test::More tests => 107; | ||||
| 
 | ||||
| foreach my $config (Slic3r::Config->new, Slic3r::Config::Full->new) { | ||||
|     $config->set('layer_height', 0.3); | ||||
|  | @ -60,6 +60,8 @@ foreach my $config (Slic3r::Config->new, Slic3r::Config::Full->new) { | |||
|      | ||||
|     $config->set('extruder_offset', [[10,20],[30,45]]); | ||||
|     is_deeply [ map $_->pp, @{$config->get('extruder_offset')} ], [[10,20],[30,45]], 'set/get points'; | ||||
|     $config->set('extruder_offset', [Slic3r::Pointf->new(10,20),Slic3r::Pointf->new(30,45)]); | ||||
|     is_deeply [ map $_->pp, @{$config->get('extruder_offset')} ], [[10,20],[30,45]], 'set/get points'; | ||||
|     is $config->serialize('extruder_offset'), '10x20,30x45', 'serialize points'; | ||||
|     $config->set_deserialize('extruder_offset', '20x10'); | ||||
|     is_deeply [ map $_->pp, @{$config->get('extruder_offset')} ], [[20,10]], 'deserialize points'; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Alessandro Ranellucci
						Alessandro Ranellucci