# bash completion for ImageMagick                          -*- shell-script -*-

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

    return 1
}

_convert()
{
    local cur prev words cword
    _init_completion || return

    _ImageMagick && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$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 convert

_mogrify()
{
    local cur prev words cword
    _init_completion || return

    _ImageMagick && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$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 mogrify

_display()
{
    local cur prev words cword
    _init_completion || return

    _ImageMagick && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$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 display

_animate()
{
    local cur prev words cword
    _init_completion || return

    _ImageMagick && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur"))
    elif [[ $cur == +* ]]; then
        COMPREPLY=($(compgen -W '+debug +dither +gamma +map +matte' \
            -- "$cur"))
    else
        _filedir
    fi
} &&
    complete -F _animate animate

_identify()
{
    local cur prev words cword
    _init_completion || return

    _ImageMagick && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur"))
    elif [[ $cur == +* ]]; then
        COMPREPLY=($(compgen -W '+debug' -- "$cur"))
    else
        _filedir
    fi
} &&
    complete -F _identify identify

_montage()
{
    local cur prev words cword
    _init_completion || return

    _ImageMagick && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur"))
    elif [[ $cur == +* ]]; then
        COMPREPLY=($(compgen -W '+adjoin +compress +debug +dither +endian
            +gamma +label +matte +page' -- "$cur"))
    else
        _filedir
    fi
} &&
    complete -F _montage montage

_composite()
{
    local cur prev words cword
    _init_completion || return

    _ImageMagick && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur"))
    elif [[ $cur == +* ]]; then
        COMPREPLY=($(compgen -W '+compress +debug +dither +endian +label
            +matte +negate +page +write' -- "$cur"))
    else
        _filedir
    fi
} &&
    complete -F _composite composite

_compare()
{
    local cur prev words cword
    _init_completion || return

    _ImageMagick && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur"))
    elif [[ $cur == +* ]]; then
        COMPREPLY=($(compgen -W '+debug' -- "$cur"))
    else
        _filedir
    fi
} &&
    complete -F _compare compare

_conjure()
{
    local cur prev words cword
    _init_completion || return

    _ImageMagick && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur"))
    elif [[ $cur == +* ]]; then
        COMPREPLY=($(compgen -W '+debug' -- "$cur"))
    else
        _filedir
    fi
} &&
    complete -F _conjure conjure

_import()
{
    local cur prev words cword
    _init_completion || return

    _ImageMagick && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur"))
    elif [[ $cur == +* ]]; then
        COMPREPLY=($(compgen -W '+debug' -- "$cur"))
    else
        _filedir
    fi
} &&
    complete -F _import import

_stream()
{
    local cur prev words cword
    _init_completion || return

    _ImageMagick && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur"))
    elif [[ $cur == +* ]]; then
        COMPREPLY=($(compgen -W '+debug' -- "$cur"))
    else
        _filedir
    fi
} &&
    complete -F _stream stream

# ex: filetype=sh
