# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
# ex: ts=8 sw=8 noet filetype=sh
#
# bash completion for ImageMagick

have convert && {
_ImageMagick()
{
	local prev
	prev=${COMP_WORDS[COMP_CWORD-1]}

	case "$prev" in
		-channel)
			COMPREPLY=( $( compgen -W 'Red Green Blue Opacity \
				Matte Cyan Magenta Yellow Black' -- $cur ) )
			return 0
			;;
		-colormap)
			COMPREPLY=( $( compgen -W 'shared private' -- $cur ) )
			return 0
			;;
		-colorspace)
			COMPREPLY=( $( compgen -W 'GRAY OHTA RGB Transparent \
				XYZ YCbCr YIQ YPbPr YUV CMYK' -- $cur ) )
			return 0
			;;
		-compose)
			COMPREPLY=( $( compgen -W 'Over In Out Atop Xor Plus \
				Minus Add Subtract Difference Multiply Bumpmap\
				Copy CopyRed CopyGreen CopyBlue CopyOpacity' \
				-- $cur ) )
			return 0
			;;
		-compress)
			COMPREPLY=( $( compgen -W 'None BZip Fax Group4 JPEG \
				Lossless LZW RLE Zip' -- $cur ) )
			return 0
			;;
		-dispose)
			COMPREPLY=( $( compgen -W 'Undefined None Background \
						    Previous' -- $cur ) )
			return 0
			;;
		-encoding)
			COMPREPLY=( $( compgen -W 'AdobeCustom AdobeExpert \
				AdobeStandard AppleRoman BIG5 GB2312 Latin2 \
				None SJIScode Symbol Unicode Wansung' -- $cur))
			return 0
			;;
		-endian)
			COMPREPLY=( $( compgen -W 'MSB LSB' -- $cur ) )
			return 0
			;;
		-filter)
			COMPREPLY=( $( compgen -W 'Point Box Triangle Hermite \
				Hanning Hamming Blackman Gaussian Quadratic \
				Cubic Catrom Mitchell Lanczos Bessel Sinc' \
				-- $cur ) )
			return 0
			;;
		-format)
			COMPREPLY=( $( compgen -W "$( convert -list format | \
				    awk '/ [r-][w-][+-] / {print $1}' | \
				    tr -d '*' | tr [:upper:] [:lower:] )" \
				    -- $cur ) )
			return 0
			;;
		-gravity)
			COMPREPLY=( $( compgen -W 'Northwest North NorthEast \
				West Center East SouthWest South SouthEast' \
				-- $cur ) )
			return 0
			;;
		-intent)
			COMPREPLY=( $( compgen -W 'Absolute Perceptual \
					Relative Saturation' -- $cur ) )
			return 0
			;;
		-interlace)
			COMPREPLY=( $( compgen -W 'None Line Plane Partition' \
					-- $cur ) )
			return 0
			;;
		-limit)
			COMPREPLY=( $( compgen -W 'Disk File Map Memory' \
					-- $cur ) )
			return 0
			;;
		-list)
			COMPREPLY=( $( compgen -W 'Delegate Format Magic \
					Module Resource Type' -- $cur ) )
			return 0
			;;
		-map)
			COMPREPLY=( $( compgen -W 'best default gray red \
					green blue' -- $cur ) )
			_filedir
			return 0
			;;
		-noise)
			COMPREPLY=( $( compgen -W 'Uniform Gaussian \
					Multiplicative \
				Impulse Laplacian Poisson' -- $cur ) )
			return 0
			;;
		-preview)
			COMPREPLY=( $( compgen -W 'Rotate Shear Roll Hue \
					Saturation Brightness Gamma Spiff \
					Dull Grayscale Quantize Despeckle \
					ReduceNoise AddNoise Sharpen Blur \
					Treshold EdgeDetect Spread Shade \
					Raise Segment Solarize Swirl Implode \
					Wave OilPaint CharcoalDrawing JPEG' \
					-- $cur ) )
			return 0
			;;
		-@(mask|profile|texture|tile|write))
			_filedir
			return 0
			;;
		-type)
			COMPREPLY=( $( compgen -W 'Bilevel Grayscale Palette \
					PaletteMatte TrueColor TrueColorMatte \
					ColorSeparation ColorSeparationlMatte \
					Optimize' -- $cur ) )
			return 0
			;;
		-units)
			COMPREPLY=( $( compgen -W 'Undefined PixelsPerInch \
					PixelsPerCentimeter' -- $cur ) )
			return 0
			;;
		-virtual-pixel)
			COMPREPLY=( $( compgen -W 'Constant Edge mirror tile' \
					-- $cur ) )
			return 0
			;;
		-visual)
			COMPREPLY=( $( compgen -W 'StaticGray GrayScale \
					StaticColor PseudoColor TrueColor \
					DirectColor defaut visualid' -- $cur ))
			return 0
			;;
	esac
}

_convert()
{
	local cur

	COMPREPLY=()
	cur=`_get_cword`

	_ImageMagick

	if [[ "$cur" == -* ]]; then
		COMPREPLY=( $( compgen -W '-adaptive-blur -adaptive-resize \
			-adaptive-sharpen -adjoin -affine -alpha -annotate \
			-antialias -append -attenuate -authenticate \
			-auto-orient -average -background -bench -bias \
			-black-point-compensation -black-threshold \
			-blue-primary -blur -border -bordercolor -caption \
			-channel -charcoal -chop -clip -clip-mask -clip-path \
			-clone -clut -coalesce -colorize -colors -colorspace \
			-combine -comment -compose -composite -compress \
			-contrast -contrast-stretch -convolve -crop -cycle \
			-debug -decipher -deconstruct -define -delay -delete \
			-density -depth -despeckle -display -dispose -distort \
			-dither -draw -edge -emboss -encipher -encoding \
			-endian -enhance -equalize -evaluate -extent -extract \
			-family -fill -filter -flatten -flip -floodfill -flop \
			-font -format -frame -fuzz -fx -gamma -gaussian-blur \
			-geometry -gravity -green-primary -help -identify \
			-implode -insert -intent -interlace -interpolate \
			-label -lat -layers -level -limit -linear-stretch \
			-liquid-rescale -list -log -loop -map -mask \
			-mattecolor -median -modulate -monitor -monochrome \
			-morph -mosaic -motion-blur -negate -noise -normalize \
			-opaque -ordered-dither -orient -page -paint -ping \
			-pointsize -polaroid -posterize -preview -print \
			-process -profile -quality -quantize -quiet \
			-radial-blur -raise -random-threshold -recolor \
			-red-primary -regard-warnings -region -render -repage \
			-resample -resize -respect-parenthesis -reverse -roll \
			-rotate -sample -sampling-factor -scale -scene -seed \
			-segment -separate -sepia-tone -set -shade -shadow \
			-sharpen -shave -shear -sigmoidal-contrast -size \
			-sketch -solarize -splice -spread -stretch -strip \
			-stroke -strokewidth -style -swap -swirl -taint \
			-texture -threshold -thumbnail -tile -tile-offset \
			-tint -transform -transparent -transparent-color \
			-transpose -transverse -treedepth -trim -type \
			-undercolor -unique-colors -units -unsharp -verbose \
			-version -view -vignette -virtual-pixel -wave \
			-weight -white-point -white-threshold \
			-write' -- $cur ) )
	elif [[ "$cur" == +* ]]; then
		COMPREPLY=( $( compgen -W '+adjoin +append +compress \
			+contrast +debug +dither +endian +gamma +label +map \
			+mask +matte +negate +noise +page +raise +render \
			+write' -- $cur ) )
	else
		_filedir
	fi
}
complete -F _convert $filenames convert

_mogrify()
{
	local cur

	COMPREPLY=()
	cur=`_get_cword`

	_ImageMagick

	if [[ "$cur" == -* ]]; then
		COMPREPLY=( $( compgen -W '-adaptive-blur -adaptive-resize \
			-adaptive-sharpen -adjoin -affine -alpha -annotate \
			-antialias -attenuate -authenticate -auto-orient \
			-background -bias -black-point-compensation \
			-black-threshold -blue-primary -blur -border \
			-bordercolor -caption -channel -charcoal -chop -clip \
			-clip-mask -clip-path -clut -colorize -colors \
			-colorspace -comment -compose -compress -contrast \
			-contrast-stretch -convolve -cycle -debug -decipher \
			-define -delay -density -depth -despeckle -display \
			-dispose -distort -dither -draw -edge -emboss \
			-encipher -encoding -endian -enhance -equalize \
			-evaluate -extent -extract -family -fill -filter \
			-flip -floodfill -flop -font -format -frame -fuzz \
			-gamma -gaussian-blur -geometry -gravity \
			-green-primary -help -identify -implode -intent \
			-interlace -interpolate -label -lat -layers -level \
			-limit -linear-stretch -liquid-rescale -list -log \
			-loop -mask -mattecolor -median -modulate -monitor \
			-monochrome -motion-blur -negate -noise -normalize \
			-opaque -ordered-dither -orient -page -paint -path \
			-ping -pointsize -polaroid -posterize -preview -print \
			-profile -quality -quantize -quiet -radial-blur \
			-raise -random-threshold -recolor -red-primary \
			-regard-warnings -region -render -repage -resample \
			-resize -roll -rotate -sample -sampling-factor -scale \
			-scene -seed -segment -sepia-tone -set -shade -shadow \
			-sharpen -shave -shear -sigmoidal-contrast -size \
			-sketch -solarize -splice -spread -stretch -strip \
			-stroke -strokewidth -style -swirl -taint -texture \
			-threshold -thumbnail -tile -tile-offset -tint \
			-transform -transparent -transparent-color -transpose \
			-transverse -treedepth -trim -type -undercolor \
			-unique-colors -units -unsharp -verbose -version \
			-view -vignette -virtual-pixel -wave -weight \
			-white-point -white-threshold' -- $cur ) )
	elif [[ "$cur" == +* ]]; then
		COMPREPLY=( $( compgen -W '+compress +contrast +debug +dither \
			+endian +gamma +label +map +mask +matte +negate +page \
			+raise' -- $cur ) )
	else
		_filedir
	fi
}
complete -F _mogrify $filenames mogrify

_display()
{
	local cur

	COMPREPLY=()
	cur=`_get_cword`

	_ImageMagick

	if [[ "$cur" == -* ]]; then
		COMPREPLY=( $( compgen -W '-alpha -antialias -authenticate \
			-auto-orient -backdrop -background -border \
			-bordercolor -borderwidth -channel -clip \
			-clip-path -coalesce -colormap -colors -colorspace \
			-comment -compress -contrast -crop -debug -decipher \
			-define -delay -density -depth -despeckle -display \
			-dispose -dither -edge -endian -enhance -extract \
			-filter -flatten -flip -flop -font -foreground \
			-format -frame -gamma -geometry -help -iconGeometry \
			-iconic -identify -immutable -interlace -interpolate \
			-label -limit -list -log -loop -map -mattecolor \
			-monitor -monochrome -name -negate -page -profile \
			-quality -quantize -quiet -raise -regard-warnings \
			-remote -repage -resample -resize \
			-respect-parenthesis -roll -rotate -sample \
			-sampling-factor -scenes -seed -segment -set \
			-shared-memory -sharpen -size -strip -texture -title \
			-transparent-color -treedepth -trim -update \
			-usePixmap -verbose -version -virtual-pixel -visual \
			-window -window-group -write' -- $cur ) )
	elif [[ "$cur" == +* ]]; then
		COMPREPLY=( $( compgen -W '+compress +contrast +debug +dither \
			+endian +gamma +label +map +matte +negate +page \
			+raise +write' -- $cur ) )
	else
		_filedir
	fi
}
complete -F _display $filenames display

_animate()
{
	local cur

	COMPREPLY=()
	cur=`_get_cword`

	_ImageMagick

	if [[ "$cur" == -* ]]; then
		COMPREPLY=( $( compgen -W '-alpha -authenticate -backdrop \
			-background -bordercolor -borderwidth -channel \
			-coalesce -colormap -colors -colorspace -crop -debug \
			-decipher -define -delay -density -depth -display \
			-dispose -dither -extract -filter -flatten -font \
			-foreground -format -gamma -geometry -help \
			-iconGeometry -iconic -identify -immutable -interlace \
			-interpolate -limit -list -log -loop -map -mattecolor \
			-mattecolor -monitor -monochrome -name -page -pause \
			-quantize -quiet -regard-warnings -remote -repage \
			-resample -resize -respect-parenthesis -rotate \
			-sampling-factor -scenes -seed -set -shared-memory \
			-size -strip -title -transparent-color -treedepth \
			-trim -verbose -version -virtual-pixel -visual \
			-window' -- $cur ) )
	elif [[ "$cur" == +* ]]; then
		COMPREPLY=( $( compgen -W '+debug +dither +gamma +map +matte' -- $cur ) )
	else
		_filedir
	fi
}
complete -F _animate $filenames animate

_identify()
{
	local cur

	COMPREPLY=()
	cur=`_get_cword`

	_ImageMagick

	if [[ "$cur" == -* ]]; then
		COMPREPLY=( $( compgen -W '-alpha -antialias -authenticate \
			-channel -colorspace -crop -debug -define -density \
			-depth -extract -format -fuzz -gamma -help -interlace \
			-interpolate -limit -list -log -monitor -ping -quiet \
			-regard-warnings -respect-parenthesis \
			-sampling-factor -seed -set -size -strip -units \
			-verbose -version -virtual-pixel' -- $cur ) )
	elif [[ "$cur" == +* ]]; then
		COMPREPLY=( $( compgen -W '+debug' -- $cur ) )
	else
		_filedir
	fi
}
complete -F _identify $filenames identify

_montage()
{
	local cur

	COMPREPLY=()
	cur=`_get_cword`

	_ImageMagick

	if [[ "$cur" == -* ]]; then
		COMPREPLY=( $( compgen -W '-adjoin -affine -alpha \
			-authenticate -background -blue-primary -blur -border \
			-bordercolor -borderwidth -caption -channel -clone \
			-coalesce -colors -colorspace -comment -compose \
			-compress -crop -debug -define -density -depth \
			-display -dispose -dither -draw -encoding -endian \
			-extract -fill -filter -flatten -flip -flop -font \
			-format -frame -gamma -geometry -gravity \
			-green-primary -help -identify -interlace \
			-interpolate -label -limit -list -log -mattecolor \
			-mode -monitor -monochrome -origin -page -pointsize \
			-polaroid -profile -quality -quantize -quiet \
			-red-primary -regard-warnings -repage -resize \
			-respect-parenthesis -rotate -sampling-factor -scenes \
			-seed -set -shadow -size -strip -stroke -texture \
			-thumbnail -tile -title -transform -transparent \
			-transparent-color -treedepth -trim -type -units \
			-verbose -version -virtual-pixel \
			-white-point' -- $cur ) )
	elif [[ "$cur" == +* ]]; then
		COMPREPLY=( $( compgen -W '+adjoin +compress +debug +dither \
			+endian +gamma +label +matte +page' -- $cur ) )
	else
		_filedir
	fi
}
complete -F _montage $filenames montage

_composite()
{
	local cur

	COMPREPLY=()
	cur=`_get_cword`

	_ImageMagick

	if [[ "$cur" == -* ]]; then
		COMPREPLY=( $( compgen -W '-affine -alpha -authenticate \
			-blend -blue-primary -border -bordercolor -channel \
			-colors -colorspace -comment -compose -compress \
			-debug -decipher -define -density -depth -displace \
			-display -dispose -dissolve -dither -encipher \
			-encoding -endian -extract -filter -font -format \
			-geometry -gravity -green-primary -help -identify \
			-interlace -interpolate -label -limit -list -log \
			-monitor -monochrome -negate -page -profile -quality \
			-quantize -quiet -red-primary -regard-warnings \
			-repage -resize -respect-parenthesis -rotate \
			-sampling-factor -scene -seed -sharpen -shave -size \
			-stegano -stereo -strip -swap -thumbnail -tile \
			-transform -transparent-color -treedepth -type -units \
			-unsharp -verbose -version -virtual-pixel -watermark \
			-white-point -write' -- $cur ) )
	elif [[ "$cur" == +* ]]; then
		COMPREPLY=( $( compgen -W '+compress +debug +dither +endian +label \
			+matte +negate +page +write' -- $cur ) )
	else
		_filedir
	fi
}
complete -F _composite $filenames composite

_compare()
{
	local cur

	COMPREPLY=()
	cur=`_get_cword`

	_ImageMagick

	if [[ "$cur" == -* ]]; then
		COMPREPLY=( $( compgen -W '-alpha -authenticate -channel \
			-colorspace -compress -debug -decipher -define \
			-density -depth -encipher -extract -format -fuzz \
			-help -highlight-color -identify -interlace -limit \
			-list -log -metric -monitor -passphrase -profile \
			-quality -quantize -quiet -regard-warnings \
			-respect-parenthesis -sampling-factor -seed -set \
			-size -transparent-color -type -verbose -version \
			-virtual-pixel' -- $cur ) )
	elif [[ "$cur" == +* ]]; then
		COMPREPLY=( $( compgen -W '+debug' -- $cur ) )
	else
		_filedir
	fi
}
complete -F _compare $filenames compare

_conjure()
{
	local cur

	COMPREPLY=()
	cur=`_get_cword`

	_ImageMagick

	if [[ "$cur" == -* ]]; then
		COMPREPLY=( $( compgen -W '-debug -help -list -log -monitor \
			-quiet -regard-warnings -seed -verbose \
			-version' -- $cur ) )
	elif [[ "$cur" == +* ]]; then
		COMPREPLY=( $( compgen -W '+debug' -- $cur ) )
	else
		_filedir
	fi
}
complete -F _conjure $filenames conjure

_import()
{
	local cur

	COMPREPLY=()
	cur=`_get_cword`

	_ImageMagick

	if [[ "$cur" == -* ]]; then
		COMPREPLY=( $( compgen -W '-adjoin -annotate -border -channel \
			-colors -colorspace -comment -compress -crop -debug \
			-define -delay -density -depth -descend -display \
			-dispose -dither -encipher -encoding -endian -filter \
			-format -frame -geometry -gravity -help -identify \
			-interlace -interpolate -label -limit -list -log \
			-monitor -monochrome -negate -page -pause -pointsize \
			-quality -quantize -quiet -regard-warnings -repage \
			-resize -respect-parenthesis -rotate -sampling-factor \
			-scene -screen -seed -set -silent -snaps -strip \
			-thumbnail -transparent -transparent-color -treedepth \
			-trim -type -verbose -version -virtual-pixel \
			-window' -- $cur ) )
	elif [[ "$cur" == +* ]]; then
		COMPREPLY=( $( compgen -W '+debug' -- $cur ) )
	else
		_filedir
	fi
}
complete -F _import $filenames import

_stream()
{
	local cur

	COMPREPLY=()
	cur=`_get_cword`

	_ImageMagick

	if [[ "$cur" == -* ]]; then
		COMPREPLY=( $( compgen -W '-authenticate -channel -colorspace \
			-compress -debug -define -density -depth -extract \ 
			-help -identify -interlace -interpolate -limit -list \
			-log -map -monitor -quantize -quiet -regard-warnings \
			-respect-parenthesis -sampling-factor -seed -set \
			-size -storage-type -transparent-color -verbose \
			-version -virtual-pixel' -- $cur ) )
	elif [[ "$cur" == +* ]]; then
		COMPREPLY=( $( compgen -W '+debug' -- $cur ) )
	else
		_filedir
	fi
}
complete -F _stream $filenames stream
}
