Refactor removeDuplicateGradients to loop until it reaches a fixed point
This is commits enables a future optimization (but is not a notable optimization in itself). Signed-off-by: Niels Thykier <niels@thykier.net>
This commit is contained in:
parent
a3f761f40c
commit
0e82b8dcad
1 changed files with 13 additions and 11 deletions
|
|
@ -1617,18 +1617,21 @@ def dedup_gradient(master_id, duplicates_ids, duplicates, referenced_ids):
|
||||||
|
|
||||||
|
|
||||||
def removeDuplicateGradients(doc):
|
def removeDuplicateGradients(doc):
|
||||||
global _num_elements_removed
|
prev_num = -1
|
||||||
num = 0
|
num = 0
|
||||||
|
|
||||||
linear_gradients = doc.getElementsByTagName('linearGradient')
|
while prev_num != num:
|
||||||
radial_gradients = doc.getElementsByTagName('radialGradient')
|
prev_num = num
|
||||||
|
|
||||||
|
linear_gradients = doc.getElementsByTagName('linearGradient')
|
||||||
|
radial_gradients = doc.getElementsByTagName('radialGradient')
|
||||||
|
|
||||||
|
# get a collection of all elements that are referenced and their referencing elements
|
||||||
|
referenced_ids = findReferencedElements(doc.documentElement)
|
||||||
|
for master_id, duplicates_ids, duplicates in detect_duplicate_gradients(linear_gradients, radial_gradients):
|
||||||
|
dedup_gradient(master_id, duplicates_ids, duplicates, referenced_ids)
|
||||||
|
num += len(duplicates)
|
||||||
|
|
||||||
# get a collection of all elements that are referenced and their referencing elements
|
|
||||||
referencedIDs = findReferencedElements(doc.documentElement)
|
|
||||||
for master_id, duplicates_ids, duplicates in detect_duplicate_gradients(linear_gradients, radial_gradients):
|
|
||||||
dedup_gradient(master_id, duplicates_ids, duplicates, referencedIDs)
|
|
||||||
_num_elements_removed += len(duplicates)
|
|
||||||
num += len(duplicates)
|
|
||||||
return num
|
return num
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -3775,8 +3778,7 @@ def scourString(in_string, options=None):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# remove duplicate gradients
|
# remove duplicate gradients
|
||||||
while removeDuplicateGradients(doc) > 0:
|
_num_elements_removed += removeDuplicateGradients(doc)
|
||||||
pass
|
|
||||||
|
|
||||||
if options.group_collapse:
|
if options.group_collapse:
|
||||||
_num_elements_removed += mergeSiblingGroupsWithCommonAttributes(doc.documentElement)
|
_num_elements_removed += mergeSiblingGroupsWithCommonAttributes(doc.documentElement)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue