hackthelobby/libcaca/caca-sharp/Dither.cs

161 lines
5.9 KiB
C#

/*
* libcaca .NET bindings for libcaca
* Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>
* 2007 Sam Hocevar <sam@hocevar.net>
* All Rights Reserved
*
* 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://www.wtfpl.net/ for more details.
*/
using System;
using System.Runtime.InteropServices;
using System.Security;
using System.Drawing;
namespace Caca
{
public class Dither : IDisposable
{
public readonly IntPtr _dither;
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern IntPtr caca_create_dither(int bpp, int w,
int h, int pitch,
uint rmask,
uint gmask,
uint bmask,
uint amask);
public Dither(int bpp, Size s, int pitch,
uint rmask, uint gmask, uint bmask, uint amask)
{
_dither = caca_create_dither(bpp, s.Width, s.Height, pitch,
rmask, gmask, bmask, amask);
}
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern int caca_free_dither(IntPtr d);
public void Dispose()
{
caca_free_dither(_dither);
GC.SuppressFinalize(this);
}
/* TODO: fix this shit */
#if false
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern int caca_set_dither_palette(IntPtr d,
uint[] r, uint[] g,
uint[] b, uint[] a);
#endif
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern int caca_set_dither_brightness(IntPtr d, float b);
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern int caca_set_dither_gamma(IntPtr d, float g);
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern int caca_set_dither_contrast(IntPtr d, float c);
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern int caca_set_dither_invert(IntPtr d, int i);
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern int caca_set_dither_antialias(IntPtr d, string s);
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern string[] caca_get_dither_antialias_list(IntPtr d);
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern int caca_set_dither_color(IntPtr d, string s);
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern string[] caca_get_dither_color_list(IntPtr d);
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern int caca_set_dither_charset(IntPtr d, string s);
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern string[] caca_get_dither_charset_list(IntPtr d);
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern int caca_set_dither_mode(IntPtr d, string s);
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
SuppressUnmanagedCodeSecurity]
private static extern string[] caca_get_dither_mode_list(IntPtr d);
public int setBrightness(float b)
{
return caca_set_dither_brightness(_dither, b);
}
public int setGamma(float g)
{
return caca_set_dither_gamma(_dither, g);
}
public int setContrast(float c)
{
return caca_set_dither_contrast(_dither, c);
}
public int setInvert(int i)
{
return caca_set_dither_invert(_dither, i);
}
public int setAntialias(string s)
{
return caca_set_dither_antialias(_dither, s);
}
public int setColor(string s)
{
return caca_set_dither_color(_dither, s);
}
public int setCharset(string s)
{
return caca_set_dither_charset(_dither, s);
}
public int setMode(string s)
{
return caca_set_dither_mode(_dither, s);
}
/* <FIXME> */
public string[] getAntialiasList()
{
return caca_get_dither_antialias_list(_dither);
}
public string[] getColorList()
{
return caca_get_dither_color_list(_dither);
}
public string[] getCharsetList()
{
return caca_get_dither_charset_list(_dither);
}
public string[] getModeList()
{
return caca_get_dither_mode_list(_dither);
}
/* </FIXME> */
}
}