180 } |
180 } |
181 |
181 |
182 // ============================================================================= |
182 // ============================================================================= |
183 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
183 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
184 // ============================================================================= |
184 // ============================================================================= |
185 void simplify (short& dNum, short& dDenom) { |
185 void simplify (short& numer, short& denom) { |
186 bool bRepeat; |
186 bool repeat; |
187 |
187 |
188 do { |
188 do { |
189 bRepeat = false; |
189 repeat = false; |
190 |
190 |
191 for (ulong x = 0; x < NUM_PRIMES; x++) { |
191 for (ushort x = 0; x < NUM_PRIMES; x++) { |
192 ulong i = NUM_PRIMES - x - 1; |
192 const ushort prime = g_primes[NUM_PRIMES - x - 1]; |
193 ushort uPrime = g_primes[i]; |
|
194 |
193 |
195 if (dNum <= uPrime || dDenom <= uPrime) |
194 if (numer <= prime || denom <= prime) |
196 continue; |
195 continue; |
197 |
196 |
198 if ((dNum % uPrime == 0) && (dDenom % uPrime == 0)) { |
197 if ((numer % prime == 0) && (denom % prime == 0)) { |
199 dNum /= uPrime; |
198 numer /= prime; |
200 dDenom /= uPrime; |
199 denom /= prime; |
201 bRepeat = true; |
200 repeat = true; |
202 break; |
201 break; |
203 } |
202 } |
204 } |
203 } |
205 } while (bRepeat); |
204 } while (repeat); |
206 } |
205 } |
207 |
206 |
208 // ============================================================================= |
207 // ============================================================================= |
209 vertex rotPoint (const vector<LDObject*>& objs) { |
208 vertex rotPoint (const vector<LDObject*>& objs) { |
210 if (edit_rotpoint == 1) |
209 if (edit_rotpoint == 1) |
212 |
211 |
213 bbox box; |
212 bbox box; |
214 |
213 |
215 // Calculate center vertex |
214 // Calculate center vertex |
216 for (LDObject* obj : objs) { |
215 for (LDObject* obj : objs) { |
217 if (obj->getType () == LDObject::Subfile) |
216 if (obj->hasMatrix ()) |
218 box << static_cast<LDSubfile*> (obj)->pos; |
217 box << dynamic_cast<LDMatrixObject*> (obj)->position (); |
219 else if (obj->getType () == LDObject::Radial) |
|
220 box << static_cast<LDRadial*> (obj)->pos; |
|
221 else |
218 else |
222 box << obj; |
219 box << obj; |
223 } |
220 } |
224 |
221 |
225 return box.center (); |
222 return box.center (); |