//
//  libpipi       Pathetic image processing interface library
//  Copyright (c) 2004-2008 Sam Hocevar <sam@zoy.org>
//                All Rights Reserved
//
//  $Id$
//
//  This library is free software. It comes without any warranty, to
//  the extent permitted by applicable law. You can redistribute it
//  and/or modify it under the terms of the Do What The Fuck You Want
//  To Public License, Version 2, as published by Sam Hocevar. See
//  http://sam.zoy.org/wtfpl/COPYING for more details.
//

using System;
using System.Runtime.InteropServices;
using System.Security;

namespace Pipi
{
    public class Picture
    {
        private IntPtr _picture;

        [DllImport("libpipi.dll", CallingConvention=CallingConvention.Cdecl),
         SuppressUnmanagedCodeSecurity]
        private static extern IntPtr pipi_load(string s);
        public Picture(string s)
        {
            _picture = pipi_load(s);
        }

        [DllImport("libpipi.dll", CallingConvention=CallingConvention.Cdecl),
         SuppressUnmanagedCodeSecurity]
        private static extern int pipi_free(IntPtr img);
        ~Picture()
        {
            pipi_free(_picture);
        }

        [DllImport("libpipi.dll", CallingConvention=CallingConvention.Cdecl),
         SuppressUnmanagedCodeSecurity]
        private static extern IntPtr pipi_save(IntPtr p, string s);
        public void Save(string s)
        {
            _picture = pipi_save(_picture, s);
        }

        [DllImport("libpipi.dll", CallingConvention=CallingConvention.Cdecl),
         SuppressUnmanagedCodeSecurity]
        private static extern int pipi_get_image_width(IntPtr img);
        public int Width
        {
            get { return pipi_get_image_width(_picture); }
        }

        [DllImport("libpipi.dll", CallingConvention=CallingConvention.Cdecl),
         SuppressUnmanagedCodeSecurity]
        private static extern int pipi_get_image_height(IntPtr img);
        public int Height
        {
            get { return pipi_get_image_height(_picture); }
        }
    }
}