#include "config.h"
#include "common.h"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <pipi.h>

int main(int argc, char *argv[])
{
    pipi_context_t *ctx;

    ctx = pipi_create_context();

    while(*++argv)
    {
        if(!strcmp(argv[0], "--dup"))
        {
            if(pipi_command(ctx, "dup") != 0)
                return EXIT_FAILURE;
        }
        else if(!strcmp(argv[0], "--swap"))
        {
            if(pipi_command(ctx, "swap") != 0)
                return EXIT_FAILURE;
        }
        else if(!strcmp(argv[0], "--dither"))
        {
            if(argv[1] == NULL)
                return EXIT_FAILURE;
            if(pipi_command(ctx, "dither", argv[1]) != 0)
                return EXIT_FAILURE;
            argv++;
        }
        else if(!strcmp(argv[0], "--blur"))
        {
            if(argv[1] == NULL)
                return EXIT_FAILURE;
            if(pipi_command(ctx, "blur", argv[1]) != 0)
                return EXIT_FAILURE;
            argv++;
        }
        else if(!strcmp(argv[0], "--gray"))
        {
            if(pipi_command(ctx, "gray") != 0)
                return EXIT_FAILURE;
        }
        else if(!strcmp(argv[0], "--autocontrast"))
        {
            if(pipi_command(ctx, "autocontrast") != 0)
                return EXIT_FAILURE;
        }
        else if(!strcmp(argv[0], "--wrap"))
        {
            if(pipi_command(ctx, "wrap") != 0)
                return EXIT_FAILURE;
        }
        else if(!strcmp(argv[0], "--mean"))
        {
            if(pipi_command(ctx, "mean") != 0)
                return EXIT_FAILURE;
        }
        else if(!strcmp(argv[0], "--min"))
        {
            if(pipi_command(ctx, "min") != 0)
                return EXIT_FAILURE;
        }
        else if(!strcmp(argv[0], "--max"))
        {
            if(pipi_command(ctx, "max") != 0)
                return EXIT_FAILURE;
        }
        else if(!strcmp(argv[0], "--sub"))
        {
            if(pipi_command(ctx, "sub") != 0)
                return EXIT_FAILURE;
        }
        else if(!strcmp(argv[0], "--add"))
        {
            if(pipi_command(ctx, "add") != 0)
                return EXIT_FAILURE;
        }
        else if(!strcmp(argv[0], "--output") || !strcmp(argv[0], "-o"))
        {
            if(argv[1] == NULL)
                return EXIT_FAILURE;
            if(pipi_command(ctx, "save", argv[1]) != 0)
                return EXIT_FAILURE;
            argv++;
        }
        else
        {
            if(pipi_command(ctx, "load", argv[0]) != 0)
                return EXIT_FAILURE;
        }
    }

    pipi_destroy_context(ctx);

    return EXIT_SUCCESS;
}

