7676cur_pcb_ops = cur_sch_ops = None
7777is_pcb = True
7878use_poppler = True
79+ # Tools/Compatibility
80+ CONVERT = 'convert'
7981# Compress SVG files using scour (KiRi mode)
8082use_scour = False
8183DEFAULT_LAYER_NAMES = {
@@ -420,9 +422,9 @@ def pdf2png(base_name, blank=False, ref=None):
420422 return sorted (glob (base_name + '-*.png' ))
421423 if isfile (source ):
422424 if use_poppler :
423- cmd = 'cat "{}" | pdftoppm -r {} -gray - | convert - "{}"' .format (source , resolution , dest1 )
425+ cmd = 'cat "{}" | pdftoppm -r {} -gray - | {} - "{}"' .format (source , resolution , CONVERT , dest1 )
424426 else :
425- cmd = ('convert -density {} "{}" -background white -alpha remove -alpha off -threshold 50% '
427+ cmd = (CONVERT + ' -density {} "{}" -background white -alpha remove -alpha off -threshold 50% '
426428 '-colorspace Gray -resample {} -depth 8 "{}"' .format (resolution * 2 , source , resolution , dest1 ))
427429 run_command (['bash' , '-c' , cmd ])
428430 else :
@@ -433,7 +435,7 @@ def pdf2png(base_name, blank=False, ref=None):
433435 # Create a blank file
434436 logger .debug ('Blanking ' + dest1 )
435437 blanked = base_name + '_blanked.png'
436- cmd = ('convert "{}" -background white -threshold 100% -negate -colorspace Gray "{}"' .format (dest1 , blanked ))
438+ cmd = (CONVERT + ' "{}" -background white -threshold 100% -negate -colorspace Gray "{}"' .format (dest1 , blanked ))
437439 run_command (['bash' , '-c' , cmd ])
438440 remove (dest1 )
439441 dest1 = blanked
@@ -446,7 +448,7 @@ def pdf2png(base_name, blank=False, ref=None):
446448
447449def create_no_diff (output_dir ):
448450 diff_name = output_dir + sep + 'no-diff.png'
449- cmd = ['convert' , '-size' , '640x480' , '-background' , 'white' , '-fill' , 'black' , '-pointsize' , '72' , '-gravity' , 'center' ,
451+ cmd = [CONVERT , '-size' , '640x480' , '-background' , 'white' , '-fill' , 'black' , '-pointsize' , '72' , '-gravity' , 'center' ,
450452 'label:No diff' , diff_name ]
451453 run_command (cmd )
452454 return diff_name
@@ -477,9 +479,9 @@ def create_diff_stereo(old_name, new_name, diff_name, font_size, layer, resoluti
477479 extra_name = extent = ''
478480 text = ' -font helvetica -pointsize ' + font_size + ' -draw "text 10,' + font_size + ' \' ' + adapt_name (name_layer )+ extra_name + '\' " '
479481 command = ['bash' , '-c' ,
480- '( convert "' + new_name + '"' + extent + ' miff:- ;' +
481- ' convert "' + old_name + '"' + extent + ' miff:- ) | ' +
482- r'convert - \( -clone 0-1 -compose darken -composite \) ' +
482+ '( ' + CONVERT + ' "'+ new_name + '"' + extent + ' miff:- ; ' + CONVERT +
483+ ' "' + old_name + '"' + extent + ' miff:- ) | ' + CONVERT +
484+ r' - \( -clone 0-1 -compose darken -composite \) ' +
483485 text + ' -channel RGB -combine "' + diff_name + '"' ]
484486 run_command (command )
485487 include = True
@@ -505,18 +507,18 @@ def create_diff_stereo_colored(old_name, new_name, diff_name, font_size, layer,
505507 with NamedTemporaryFile (mode = 'w' , prefix = 'added' , suffix = '.png' , delete = False ) as f :
506508 added = f .name
507509 command = ['bash' , '-c' ,
508- '( convert -threshold 50% "' + new_name + '"' + extent + ' miff:- ;' +
509- ' convert -threshold 50% -negate "' + old_name + '"' + extent + ' miff:- ) | ' +
510- r'convert - -compose darken -composite -negate -fill "'+ args .removed_2color + '" ' +
510+ '( ' + CONVERT + ' -threshold 50% "'+ new_name + '"' + extent + ' miff:- ; ' + CONVERT +
511+ ' -threshold 50% -negate "' + old_name + '"' + extent + ' miff:- ) | ' + CONVERT +
512+ ' - -compose darken -composite -negate -fill "'+ args .removed_2color + '" ' +
511513 ' -opaque black -transparent white "' + removed + '"' ]
512514 run_command (command )
513515 command = ['bash' , '-c' ,
514- '( convert -threshold 50% -negate "' + new_name + '"' + extent + ' miff:- ;' +
515- ' convert -threshold 50% "' + old_name + '"' + extent + ' miff:- ) | ' +
516- r'convert - -compose darken -composite -negate -fill "'+ args .added_2color + '" ' +
516+ '( ' + CONVERT + ' -threshold 50% -negate "'+ new_name + '"' + extent + ' miff:- ;' +
517+ ' ' + CONVERT + ' -threshold 50% "'+ old_name + '"' + extent + ' miff:- ) | ' +
518+ CONVERT + ' - -compose darken -composite -negate -fill "'+ args .added_2color + '" ' +
517519 ' -opaque black -transparent white "' + added + '"' ]
518520 run_command (command )
519- run_command (['convert' , old_name , added , '-composite' , removed , '-composite' ,
521+ run_command ([CONVERT , old_name , added , '-composite' , removed , '-composite' ,
520522 '-font' , 'helvetica' , '-pointsize' , font_size , '-draw' ,
521523 "text 10," + font_size + " '" + adapt_name (name_layer )+ extra_name + "'" ,
522524 diff_name ])
@@ -555,7 +557,7 @@ def create_diff_stat(old_name, new_name, diff_name, font_size, layer, resolution
555557 if args .threshold and errors > args .threshold :
556558 logger .error ('Difference for `{}` is not acceptable ({} > {})' .format (name_layer , errors , args .threshold ))
557559 exit (DIFF_TOO_BIG )
558- cmd = ['convert' , diff_name , '-font' , 'helvetica' , '-pointsize' , font_size , '-draw' ,
560+ cmd = [CONVERT , diff_name , '-font' , 'helvetica' , '-pointsize' , font_size , '-draw' ,
559561 'text 10,' + font_size + " '" + adapt_name (name_layer )+ extra_name + "'" , diff_name ]
560562 logger .debug ('Executing: ' + str (cmd ))
561563 call (cmd )
@@ -565,7 +567,7 @@ def create_diff_stat(old_name, new_name, diff_name, font_size, layer, resolution
565567def DiffImages (old_file_hash , new_file_hash , layers_old , layers_new , only_different , changed ):
566568 old_hash_dir = cache_dir + sep + old_file_hash
567569 new_hash_dir = cache_dir + sep + new_file_hash
568- files = ['convert' ]
570+ files = [CONVERT ]
569571 # Compute the difference between images for each layer, store JPGs
570572 font_size = str (int (resolution / 5 ))
571573 all_layers = {}
@@ -871,8 +873,11 @@ def get_layer(line):
871873 logger = logging .getLogger (basename (__file__ ))
872874
873875 # Check the environment
874- if which ('convert' ) is None :
875- logger .error ('No convert command, install ImageMagick' )
876+ if which ("magick" ):
877+ # Use new version of ImageMagick
878+ CONVERT = "magick"
879+ elif which ('convert' ) is None :
880+ logger .error ('No convert or magick command, install ImageMagick' )
876881 exit (MISSING_TOOLS )
877882 use_poppler = not args .force_gs
878883 if which ('pdftoppm' ) is None :
0 commit comments