/* * CuculSharp .NET bindings for libcucul * Copyright (c) 2006 Jean-Yves Lamoureux * All Rights Reserved * * $Id$ * * This library is free software; 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 libCucul { public unsafe class Cucul : IDisposable { /* Fixme */ [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern IntPtr cucul_create_canvas(int w, int h); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_get_canvas_width(IntPtr qq); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_get_canvas_height(IntPtr qq); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_set_canvas_size(IntPtr qq, int w, int h); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_rand(int min, int max); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_free_canvas(IntPtr qq); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_set_color(IntPtr qq, int fg, int bg); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_set_truecolor(IntPtr qq, Int32 fg, Int32 bg); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_putchar(IntPtr qq, int x, int y, char c); /* [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_putstr(IntPtr qq, int, int, String);*/ [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_clear_canvas(IntPtr qq); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_blit(IntPtr qq, Int32 x, Int32 y, IntPtr qq1, IntPtr qq2); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_draw_line(IntPtr qq, Int32 x1, Int32 y1, Int32 x2, Int32 y2, string c); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_draw_polyline(IntPtr qq, Int32[] x, Int32[] y, Int32 n, IntPtr c); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_draw_thin_line(IntPtr qq, Int32 x1, Int32 y1, Int32 x2, Int32 y2); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_draw_thin_polyline(IntPtr qq, Int32[] x, Int32[] y, Int32 n); /* char const *cucul_get_color_name(unsigned int); int cucul_putstr(IntPtr *, int, int, char const *); int cucul_printf(IntPtr *, int, int, char const *, ...); */ IntPtr qq; public Cucul() { qq = cucul_create_canvas(0, 0); } public void Dispose() { cucul_free_canvas(qq); GC.SuppressFinalize(this); } public Cucul(Int32 w, Int32 h) { qq = cucul_create_canvas(w, h); } public Int32 getWidth() { return cucul_get_canvas_width(qq); } public Int32 getHeight() { return cucul_get_canvas_height(qq); } public Int32 setSize(Int32 w, Int32 h) { return cucul_set_canvas_size(qq, w, h); } public static Int32 Rand(Int32 min, Int32 max) { return cucul_rand(min, max); } public Int32 setColor(int fg, int bg) { return cucul_set_color(qq, fg, bg); } public Int32 setTruecolor(Int32 fg, Int32 bg) { return cucul_set_truecolor(qq, fg, bg); } public Int32 putChar(int x, int y, char c) { return cucul_putchar(qq, x, y, c); } public Int32 clearCanvas() { return cucul_clear_canvas(qq); } public Int32 Blit(int x, int y, Cucul qq1, Cucul qq2) { return cucul_blit(qq, x, y, qq1.get_cucul_t(), qq2.get_cucul_t()); } public Int32 drawLine(Int32 x1, Int32 y1, Int32 x2, Int32 y2, string c) { return cucul_draw_line(qq, x1, y1, x2, y2, c); } /* [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_draw_polyline(IntPtr qq, Int32[] x, Int32[] y, Int32 n, IntPtr c); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_draw_thin_line(IntPtr qq, Int32 x1, Int32 y1, Int32 x2, Int32 y2); [DllImport("libCucul.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] public static extern Int32 cucul_draw_thin_polyline(IntPtr qq, Int32[] x, Int32[] y, Int32 n); */ /* Privates methods, are not meant to be called by user*/ public IntPtr get_cucul_t() { return qq; } } }