~ubuntu-branches/ubuntu/utopic/slic3r/utopic-proposed

« back to all changes in this revision

Viewing changes to lib/Slic3r/Format/AMF/Parser.pm

  • Committer: Package Import Robot
  • Author(s): Alessandro Ranellucci
  • Date: 2014-08-06 11:18:02 UTC
  • mfrom: (1.1.3)
  • Revision ID: package-import@ubuntu.com-20140806111802-8v6iez93cj6skz5l
Tags: 1.1.7+dfsg-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
    } elsif ($data->{LocalName} eq 'material') {
40
40
        my $material_id = $self->_get_attribute($data, 'id') // '_';
41
41
        $self->{_material} = $self->{_model}->set_material($material_id);
42
 
    } elsif ($data->{LocalName} eq 'metadata' && $self->{_tree}[-1] eq 'material') {
43
 
        $self->{_material_metadata_type} = $self->_get_attribute($data, 'type');
44
 
        $self->{_material}->attributes->{ $self->{_material_metadata_type} } = "";
 
42
    } elsif ($data->{LocalName} eq 'metadata') {
 
43
        $self->{_metadata_type} = $self->_get_attribute($data, 'type');
 
44
        $self->{_metadata_value} = '';
45
45
    } elsif ($data->{LocalName} eq 'constellation') {
46
46
        $self->{_constellation} = 1; # we merge all constellations as we don't support more than one
47
47
    } elsif ($data->{LocalName} eq 'instance' && $self->{_constellation}) {
63
63
        $self->{_vertex}[ $xyz_index{$self->{_coordinate}} ] .= $data->{Data};
64
64
    } elsif ($self->{_triangle} && defined $self->{_vertex_idx}) {
65
65
        $self->{_triangle}[ $self->{_vertex_idx} ] .= $data->{Data};
66
 
    } elsif ($self->{_material_metadata_type}) {
67
 
        $self->{_material}->attributes->{ $self->{_material_metadata_type} } .= $data->{Data};
 
66
    } elsif ($self->{_metadata_type}) {
 
67
        $self->{_metadata_value} .= $data->{Data};
68
68
    } elsif ($self->{_instance_property}) {
69
69
        $self->{_instance}{ $self->{_instance_property} } .= $data->{Data};
70
70
    }
96
96
        $self->{_vertex_idx} = undef;
97
97
    } elsif ($data->{LocalName} eq 'material') {
98
98
        $self->{_material} = undef;
99
 
    } elsif ($data->{LocalName} eq 'metadata' && $self->{_material}) {
100
 
        if ($self->{_material_metadata_type} =~ /^slic3r\.(.+)/) {
 
99
    } elsif ($data->{LocalName} eq 'metadata') {
 
100
        my $value = $self->{_metadata_value};
 
101
        if ($self->{_metadata_type} =~ /^slic3r\.(.+)/) {
101
102
            my $opt_key = $1;
102
103
            if (exists $Slic3r::Config::Options->{$opt_key}) {
103
 
                $self->{_material}->config->set_deserialize($opt_key, $self->{_material}->attributes->{"slic3r.$opt_key"});
 
104
                my $config;
 
105
                if ($self->{_material}) {
 
106
                    $config = $self->{_material}->config;
 
107
                } elsif ($self->{_volume}) {
 
108
                    $config = $self->{_volume}->config;
 
109
                } elsif ($self->{_object}) {
 
110
                    $config = $self->{_object}->config;
 
111
                }
 
112
                
 
113
                $config->set_deserialize($opt_key, $value) if defined $config;
 
114
            } elsif ($opt_key eq 'modifier' && $self->{_volume}) {
 
115
                $self->{_volume}->set_modifier($value);
104
116
            }
 
117
        } elsif ($self->{_material}) {
 
118
            $self->{_material}->set_attribute($self->{_metadata_type}, $value);
105
119
        }
106
 
        $self->{_material_metadata_type} = undef;
 
120
        $self->{_metadata_type} = undef;
 
121
        $self->{_metadata_value} = undef;
107
122
    } elsif ($data->{LocalName} eq 'constellation') {
108
123
        $self->{_constellation} = undef;
109
124
    } elsif ($data->{LocalName} eq 'instance') {