@@ -83,8 +83,7 @@ def transcode(self, source_pattern, destination_pattern):
8383 self .source_pattern = source_pattern
8484 self .destination_pattern = destination_pattern
8585 self .transcode_metadata ()
86- self .transcode_threads ()
87- self .transcode_stitches ()
86+ self .transcode_main ()
8887 return destination_pattern
8988
9089 def transcode_metadata (self ):
@@ -93,13 +92,7 @@ def transcode_metadata(self):
9392 dest = self .destination_pattern .extras
9493 dest .update (source )
9594
96- def transcode_threads (self ):
97- """Transcodes threads, (just moves)"""
98- source = self .source_pattern .threadlist
99- dest = self .destination_pattern .threadlist
100- dest .extend (source )
101-
102- def sequence_change_events (self ):
95+ def get_as_thread_change_sequence_events (self ):
10396 """Generates the sequence change events with their relevant indexes.
10497 If there is a sewing event prior to the thread sequence event, the first event
10598 is indexed as 1. If the first event is a discrete event, occurring before
@@ -126,14 +119,14 @@ def sequence_change_events(self):
126119 yield flags , thread , needle , order , current_index
127120 current_index += 1
128121
129- def build_change_sequence (self ):
122+ def build_thread_change_sequence (self ):
130123 """Builds a change sequence to plan out all the color changes for the file."""
131124 thread_sequence = {}
132125 lookahead_index = 0
133126 thread_sequence [0 ] = [None , None , None , None ]
134- for flags , thread , needle , order , current_index in self .sequence_change_events ():
127+ for flags , thread , needle , order , current_index in self .get_as_thread_change_sequence_events ():
135128 if flags == SET_CHANGE_SEQUENCE :
136- if order == 0 :
129+ if order is None :
137130 try :
138131 current = thread_sequence [lookahead_index ]
139132 except KeyError :
@@ -142,10 +135,10 @@ def build_change_sequence(self):
142135 lookahead_index += 1
143136 else :
144137 try :
145- current = thread_sequence [order - 1 ]
138+ current = thread_sequence [order ]
146139 except KeyError :
147140 current = [None , None , None , None ]
148- thread_sequence [order - 1 ] = current
141+ thread_sequence [order ] = current
149142 else :
150143 try :
151144 current = thread_sequence [current_index ]
@@ -158,7 +151,7 @@ def build_change_sequence(self):
158151 current [0 ] = flags
159152 if thread is not None :
160153 current [1 ] = thread
161- current [3 ] = self .source_pattern .get_thread_or_filler (thread - 1 )
154+ current [3 ] = self .source_pattern .get_thread_or_filler (thread )
162155 if needle is not None :
163156 current [2 ] = needle
164157 # TODO: account for contingency where threadset repeats threads without explicit values set within the commands.
@@ -182,17 +175,21 @@ def build_change_sequence(self):
182175 s [3 ] = self .source_pattern .get_thread_or_filler (s [1 ])
183176 return thread_sequence
184177
185- def transcode_stitches (self ):
178+ def transcode_main (self ):
186179 """Transcodes stitches.
187180 Converts middle-level commands and potentially incompatible
188181 commands into a format friendly low level commands."""
182+
189183 source = self .source_pattern .stitches
190184 self .state_trimmed = True
191185 self .needle_x = 0
192186 self .needle_y = 0
193187 self .position = 0
194188 self .order_index = - 1
195- self .change_sequence = self .build_change_sequence ()
189+ self .change_sequence = self .build_thread_change_sequence ()
190+ threadlist = self .destination_pattern .threadlist
191+ for idx , seq in self .change_sequence .items ():
192+ threadlist .append (seq [3 ])
196193
197194 flags = NO_COMMAND
198195 for self .position , self .stitch in enumerate (source ):
0 commit comments