diff --git a/csharp/Caca.cs b/csharp/Caca.cs index c420c1a..9bf4283 100644 --- a/csharp/Caca.cs +++ b/csharp/Caca.cs @@ -18,13 +18,19 @@ using System.Runtime.InteropServices; using System.Security; using System.Drawing; -using Cucul; - namespace Caca { /* Static libcaca stuff that does not fit in any object */ public static class Libcaca { + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_rand(int min, int max); + public static int Rand(int min, int max) + { + return caca_rand(min, max); + } + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] private static extern IntPtr caca_get_version(); @@ -32,6 +38,30 @@ namespace Caca { return Marshal.PtrToStringAnsi(caca_get_version()); } + + public const uint BLACK = 0x00, + BLUE = 0x01, + GREEN = 0x02, + CYAN = 0x03, + RED = 0x04, + MAGENTA = 0x05, + BROWN = 0x06, + LIGHTGRAY = 0x07, + DARKGRAY = 0x08, + LIGHTBLUE = 0x09, + LIGHTGREEN = 0x0a, + LIGHTCYAN = 0x0b, + LIGHTRED = 0x0c, + LIGHTMAGENTA = 0x0d, + YELLOW = 0x0e, + WHITE = 0x0f, + DEFAULT = 0x10, + TRANSPARENT = 0x20; + + public const uint BOLD = 0x01, + ITALICS = 0x02, + UNDERLINE = 0x04, + BLINK = 0x08; } public enum CacaEventType @@ -110,6 +140,899 @@ namespace Caca F15 = 0x128, } + public class CacaCanvas : IDisposable + { + public readonly IntPtr _c_cv; + + /* libcaca basic functions */ + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern IntPtr caca_create_canvas(int w, int h); + public CacaCanvas() + { + _c_cv = caca_create_canvas(0, 0); + } + + public CacaCanvas(Size s) + { + _c_cv = caca_create_canvas(s.Width, s.Height); + } + + public CacaCanvas(int w, int h) + { + _c_cv = caca_create_canvas(h, w); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_free_canvas(IntPtr cv); + public void Dispose() + { + /* FIXME: don't destroy ourselves if we're attached */ + caca_free_canvas(_c_cv); + GC.SuppressFinalize(this); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_set_canvas_size(IntPtr cv, + int w, int h); + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_get_canvas_width(IntPtr cv); + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_get_canvas_height(IntPtr cv); + public Size Size + { + get { return new Size(caca_get_canvas_width(_c_cv), + caca_get_canvas_height(_c_cv)); } + set { caca_set_canvas_size(_c_cv, value.Width, value.Height); } + } + + public Rectangle Rectangle + { + get { return new Rectangle(0, 0, caca_get_canvas_width(_c_cv), + caca_get_canvas_height(_c_cv)); } + set { caca_set_canvas_size(_c_cv, value.Width, value.Height); } + } + + /* canvas drawing */ + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_gotoxy(IntPtr cv, int x, int y); + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_get_cursor_x(IntPtr cv); + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_get_cursor_y(IntPtr cv); + public Point Cursor + { + get { return new Point(caca_get_cursor_x(_c_cv), + caca_get_cursor_y(_c_cv)); } + set { caca_gotoxy(_c_cv, value.X, value.Y); } + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_put_char(IntPtr cv, + int x, int y, uint c); + public int putChar(Point p, uint c) + { + return caca_put_char(_c_cv, p.X, p.Y, c); + } + + public int putChar(int x, int y, uint c) + { + return caca_put_char(_c_cv, x, y, c); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern uint caca_get_char(IntPtr cv, int x, int y); + public uint getChar(Point p) + { + return caca_get_char(_c_cv, p.X, p.Y); + } + + public uint getChar(int x, int y) + { + return caca_get_char(_c_cv, x, y); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_put_str(IntPtr cv, + int x, int y, string c); + public int putStr(Point p, string c) + { + return caca_put_str(_c_cv, p.X, p.Y, c); + } + + public int putStr(int x, int y, string c) + { + return caca_put_str(_c_cv, x, y, c); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_get_attr(IntPtr cv, int x, int y); + public int getAttr(Point p) + { + return caca_get_attr(_c_cv, p.X, p.Y); + } + + public int getAttr(int x, int y) + { + return caca_get_attr(_c_cv, x, y); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_set_attr(IntPtr cv, uint a); + public int setAttr(uint a) + { + return caca_set_attr(_c_cv, a); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_put_attr(IntPtr cv, + int x, int y, uint a); + public int putAttr(Point p, uint a) + { + return caca_put_attr(_c_cv, p.X, p.Y, a); + } + + public int putAttr(int x, int y, uint a) + { + return caca_put_attr(_c_cv, x, y, a); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_set_color_ansi(IntPtr cv, + byte fg, byte bg); + public int setColorAnsi(uint fg, uint bg) + { + return caca_set_color_ansi(_c_cv, (byte)fg, (byte)bg); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_set_color_argb(IntPtr cv, + uint fg, uint bg); + public int setColorArgb(uint fg, uint bg) + { + return caca_set_color_argb(_c_cv, fg, bg); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_clear_canvas(IntPtr cv); + public int Clear() + { + return caca_clear_canvas(_c_cv); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_set_canvas_handle(IntPtr cv, + int x, int y); + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_get_canvas_handle_x(IntPtr cv); + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_get_canvas_handle_y(IntPtr cv); + public Point Handle + { + get { return new Point(caca_get_canvas_handle_x(_c_cv), + caca_get_canvas_handle_y(_c_cv)); } + set { caca_set_canvas_handle(_c_cv, value.X, value.Y); } + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_blit(IntPtr cv, int x, int y, + IntPtr cv1, IntPtr cv2); + public int Blit(Point p, CacaCanvas canvas) + { + return caca_blit(_c_cv, p.X, p.Y, canvas._c_cv, IntPtr.Zero); + } + + public int Blit(Point p, CacaCanvas cv, CacaCanvas mask) + { + return caca_blit(_c_cv, p.X, p.Y, cv._c_cv, mask._c_cv); + } + + public int Blit(int x, int y, CacaCanvas canvas) + { + return caca_blit(_c_cv, x, y, canvas._c_cv, IntPtr.Zero); + } + + public int Blit(int x, int y, CacaCanvas cv, CacaCanvas mask) + { + return caca_blit(_c_cv, x, y, cv._c_cv, mask._c_cv); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_set_canvas_boundaries(IntPtr cv, + int x, int y, + int h, int w); + public int setBoundaries(Rectangle r) + { + return caca_set_canvas_boundaries(_c_cv, r.X, r.Y, + r.Width, r.Height); + } + + public int setBoundaries(int x, int y, int w, int h) + { + return caca_set_canvas_boundaries(_c_cv, x, y, w, h); + } + + /* canvas transformation */ + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_invert(IntPtr cv); + public int Invert() + { + return caca_invert(_c_cv); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_flip(IntPtr cv); + public int Flip() + { + return caca_flip(_c_cv); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_flop(IntPtr cv); + public int Flop() + { + return caca_flop(_c_cv); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_rotate_180(IntPtr cv); + public int Rotate180() + { + return caca_rotate_180(_c_cv); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_rotate_left(IntPtr cv); + public int RotateLeft() + { + return caca_rotate_left(_c_cv); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_rotate_right(IntPtr cv); + public int RotateRight() + { + return caca_rotate_right(_c_cv); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_stretch_left(IntPtr cv); + public int StretchLeft() + { + return caca_stretch_left(_c_cv); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_stretch_right(IntPtr cv); + public int StretchRight() + { + return caca_stretch_right(_c_cv); + } + + /* primitives drawing */ + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_draw_line(IntPtr cv, int x1, int y1, + int x2, int y2, uint c); + public int drawLine(Point p1, Point p2, uint c) + { + return caca_draw_line(_c_cv, p1.X, p1.Y, p2.X, p2.Y, c); + } + + public int drawLine(int x1, int y1, int x2, int y2, uint c) + { + return caca_draw_line(_c_cv, x1, y1, x2, y2, c); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_draw_polyline(IntPtr cv, int[] x, + int[] y, int n, uint c); + public int drawPolyline(Point[] lp, uint c) + { + int[] lx = new int[lp.Length]; + int[] ly = new int[lp.Length]; + for(int i = 0; i < lp.Length; i++) + { + lx[i] = lp[i].X; + ly[i] = lp[i].Y; + } + return caca_draw_polyline(_c_cv, lx, ly, lp.Length - 1, c); + } + + public int drawPolyline(int[] lx, int[] ly, uint c) + { + if(lx.Length != ly.Length) + return -1; + + return caca_draw_polyline(_c_cv, lx, ly, lx.Length - 1, c); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_draw_thin_line(IntPtr cv, int x1, + int y1, int x2, int y2); + public int drawThinLine(Point p1, Point p2) + { + return caca_draw_thin_line(_c_cv, p1.X, p1.Y, p2.X, p2.Y); + } + + public int drawThinLine(int x1, int y1, int x2, int y2) + { + return caca_draw_thin_line(_c_cv, x1, y1, x2, y2); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_draw_thin_polyline(IntPtr cv, int[] x, + int[] y, int n); + public int drawThinPolyline(Point[] lp) + { + int[] lx = new int[lp.Length]; + int[] ly = new int[lp.Length]; + for(int i = 0; i < lp.Length; i++) + { + lx[i] = lp[i].X; + ly[i] = lp[i].Y; + } + return caca_draw_thin_polyline(_c_cv, lx, ly, lp.Length - 1); + } + + public int drawThinPolyline(int[] lx, int[] ly) + { + if(lx.Length != ly.Length) + return -1; + + return caca_draw_thin_polyline(_c_cv, lx, ly, lx.Length - 1); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_draw_circle(IntPtr cv, int x, int y, + int r, uint c); + public int drawCircle(Point p, int r, uint c) + { + return caca_draw_circle(_c_cv, p.X, p.Y, r, c); + } + + public int drawCircle(int x, int y, int r, uint c) + { + return caca_draw_circle(_c_cv, x, y, r, c); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_draw_ellipse(IntPtr cv, int x, int y, + int a, int b, uint c); + public int drawEllipse(Point p, int a, int b, uint c) + { + return caca_draw_ellipse(_c_cv, p.X, p.Y, a, b, c); + } + + public int drawEllipse(int x, int y, int a, int b, uint c) + { + return caca_draw_ellipse(_c_cv, x, y, a, b, c); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_draw_thin_ellipse(IntPtr cv, + int x, int y, + int a, int b); + public int drawThinEllipse(Point p, int a, int b) + { + return caca_draw_thin_ellipse(_c_cv, p.X, p.Y, a, b); + } + + public int drawThinEllipse(int x, int y, int a, int b) + { + return caca_draw_thin_ellipse(_c_cv, x, y, a, b); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_fill_ellipse(IntPtr cv, int x, int y, + int a, int b, uint c); + public int fillEllipse(Point p, int a, int b, uint c) + { + return caca_fill_ellipse(_c_cv, p.X, p.Y, a, b, c); + } + + public int fillEllipse(int x, int y, int a, int b, uint c) + { + return caca_fill_ellipse(_c_cv, x, y, a, b, c); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_draw_box(IntPtr cv, int x, int y, + int w, int h, uint c); + public int drawBox(Rectangle r, uint c) + { + return caca_draw_box(_c_cv, r.X, r.Y, r.Width, r.Height, c); + } + + public int drawBox(int x, int y, int w, int h, uint c) + { + return caca_draw_box(_c_cv, x, y, w, h, c); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_draw_thin_box(IntPtr cv, int x, int y, + int w, int h); + public int drawThinBox(Rectangle r) + { + return caca_draw_thin_box(_c_cv, r.X, r.Y, r.Width, r.Height); + } + + public int drawThinBox(int x, int y, int w, int h) + { + return caca_draw_thin_box(_c_cv, x, y, w, h); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_draw_cp437_box(IntPtr cv, int x, int y, + int w, int h); + public int drawCp437Box(Rectangle r) + { + return caca_draw_cp437_box(_c_cv, r.X, r.Y, r.Width, r.Height); + } + + public int drawCp437Box(int x, int y, int w, int h) + { + return caca_draw_cp437_box(_c_cv, x, y, w, h); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_fill_box(IntPtr cv, int x, int y, + int w, int h, uint c); + public int fillBox(Rectangle r, uint c) + { + return caca_fill_box(_c_cv, r.X, r.Y, r.Width, r.Height, c); + } + + public int fillBox(int x, int y, int w, int h, uint c) + { + return caca_fill_box(_c_cv, x, y, w, h, c); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_draw_triangle(IntPtr cv, int x1, + int y1, int x2, int y2, + int x3, int y3, uint c); + public int drawTriangle(Point p1, Point p2, Point p3, uint c) + { + return caca_draw_triangle(_c_cv, p1.X, p1.Y, p2.X, p2.Y, + p3.X, p3.Y, c); + } + + public int drawTriangle(int x1, int y1, int x2, int y2, + int x3, int y3, uint c) + { + return caca_draw_triangle(_c_cv, x1, y1, x2, y2, x3, y3, c); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_draw_thin_triangle(IntPtr cv, + int x1, int y1, + int x2, int y2, + int x3, int y3); + public int drawThinTriangle(Point p1, Point p2, Point p3) + { + return caca_draw_thin_triangle(_c_cv, p1.X, p1.Y, p2.X, p2.Y, + p3.X, p3.Y); + } + + public int drawThinTriangle(int x1, int y1, int x2, int y2, + int x3, int y3) + { + return caca_draw_thin_triangle(_c_cv, x1, y1, x2, y2, x3, y3); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_fill_triangle(IntPtr cv, int x1, + int y1, int x2, int y2, + int x3, int y3, uint c); + public int fillTriangle(Point p1, Point p2, Point p3, uint c) + { + return caca_fill_triangle(_c_cv, p1.X, p1.Y, p2.X, p2.Y, + p3.X, p3.Y, c); + } + + public int fillTriangle(int x1, int y1, int x2, int y2, + int x3, int y3, uint c) + { + return caca_fill_triangle(_c_cv, x1, y1, x2, y2, x3, y3, c); + } + + /* frame handling */ + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_get_frame_count(IntPtr cv); + public int getFrameCount() + { + return caca_get_frame_count(_c_cv); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_set_frame(IntPtr cv, int f); + public int setFrame(int f) + { + return caca_set_frame(_c_cv, f); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern string caca_get_frame_name(IntPtr cv); + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_set_frame_name(IntPtr cv, string n); + public string FrameName + { + get { return caca_get_frame_name(_c_cv); } + set { caca_set_frame_name(_c_cv, value); } + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_create_frame(IntPtr cv, int f); + public int createFrame(int f) + { + return caca_create_frame(_c_cv, f); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_free_frame(IntPtr cv, int f); + public int freeFrame(int f) + { + return caca_free_frame(_c_cv, f); + } + + /* bitmap dithering */ + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_dither_bitmap(IntPtr c, int x, int y, + int w, int h, + IntPtr d, IntPtr data); + public int ditherBitmap(Rectangle r, CacaDither d, object data) + { + GCHandle gch = GCHandle.Alloc(data, GCHandleType.Pinned); + int ret = caca_dither_bitmap(_c_cv, r.X, r.Y, r.Width, r.Height, + d._dither, gch.AddrOfPinnedObject()); + gch.Free(); + return ret; + } + + public int ditherBitmap(int x, int y, int w, int h, + CacaDither d, object data) + { + GCHandle gch = GCHandle.Alloc(data, GCHandleType.Pinned); + int ret = caca_dither_bitmap(_c_cv, x, y, w, h, d._dither, + gch.AddrOfPinnedObject()); + gch.Free(); + return ret; + } + } + + public class CacaAttr + { + private uint _attr; + + public CacaAttr(uint attr) + { + _attr = attr; + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern byte caca_attr_to_ansi(uint a); + public byte toAnsi() + { + return caca_attr_to_ansi(_attr); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern byte caca_attr_to_ansi_fg(uint a); + public byte toAnsiFg() + { + return caca_attr_to_ansi_fg(_attr); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern byte caca_attr_to_ansi_bg(uint a); + public byte toAnsiBg() + { + return caca_attr_to_ansi_bg(_attr); + } + } + + public class CacaDither : 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 CacaDither(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 */ + + [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); + [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); + } + + /* */ + 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); + } + + /* */ + } + + public class CacaFont : IDisposable + { + private IntPtr _font; + private GCHandle _gch; + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern IntPtr caca_load_font(IntPtr data, uint len); + public CacaFont(string s) + { + IntPtr name = Marshal.StringToHGlobalAnsi(s); + _font = caca_load_font(name, 0); + Marshal.FreeHGlobal(name); + } + + public CacaFont(byte[] buf) + { + GCHandle _gch = GCHandle.Alloc(buf, GCHandleType.Pinned); + _font = caca_load_font(_gch.AddrOfPinnedObject(), + (uint)buf.Length); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_free_font(IntPtr d); + public void Dispose() + { + caca_free_font(_font); + _gch.Free(); + GC.SuppressFinalize(this); + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern IntPtr caca_get_font_list(); + public static string[] getList() + { + IntPtr l = caca_get_font_list(); + + int size; + for(size = 0; true; size++) + if(Marshal.ReadIntPtr(l, IntPtr.Size * size) == IntPtr.Zero) + break; + + string[] ret = new string[size]; + for(int i = 0; i < size; i++) + { + IntPtr s = Marshal.ReadIntPtr(l, IntPtr.Size * i); + ret[i] = Marshal.PtrToStringAnsi(s); + } + + return ret; + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_get_font_width(IntPtr font); + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_get_font_height(IntPtr font); + public Size Size + { + get { return new Size(caca_get_font_width(_font), + caca_get_font_height(_font)); } + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern IntPtr caca_get_font_blocks(IntPtr font); + public int[,] getBlocks() + { + IntPtr l = caca_get_font_blocks(_font); + + int size; + for(size = 1; true; size += 2) + if(Marshal.ReadIntPtr(l, IntPtr.Size * size) == IntPtr.Zero) + break; + + int[,] ret = new int[size,2]; + for(int i = 0; i < size; i++) + { + ret[i,0] = (int)Marshal.ReadIntPtr(l, IntPtr.Size * i * 2); + ret[i,1] = (int)Marshal.ReadIntPtr(l, IntPtr.Size * i * 2 + 1); + } + + return ret; + } + + [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), + SuppressUnmanagedCodeSecurity] + private static extern int caca_render_canvas(IntPtr cv, IntPtr f, + IntPtr buf, int w, int h, + int pitch); + public int Render(CacaCanvas cv, uint[,] buf, int pitch) + { + GCHandle gch = GCHandle.Alloc(buf, GCHandleType.Pinned); + int ret = caca_render_canvas(cv._c_cv, _font, + gch.AddrOfPinnedObject(), + buf.GetLength(0), buf.GetLength(1), + pitch); + gch.Free(); + return ret; + } + } + public class CacaEvent : IDisposable { public IntPtr cevent; @@ -200,8 +1123,8 @@ namespace Caca public class CacaDisplay : IDisposable { - private CuculCanvas _cv; - public CuculCanvas Canvas { get { return _cv; } } + private CacaCanvas _cv; + public CacaCanvas Canvas { get { return _cv; } } private IntPtr _c_cv; private IntPtr _c_dp; @@ -209,7 +1132,7 @@ namespace Caca [DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] private static extern IntPtr caca_create_display(IntPtr cv); - public CacaDisplay(CuculCanvas cv) + public CacaDisplay(CacaCanvas cv) { _cv = cv; _c_cv = _cv._c_cv; @@ -219,9 +1142,9 @@ namespace Caca public CacaDisplay() { /* XXX: we do not call caca_create_display() with a NULL - * argument because it's then impossible to create a CuculCanvas + * argument because it's then impossible to create a CacaCanvas * and I don't want to add a weird constructor */ - _cv = new CuculCanvas(); + _cv = new CacaCanvas(); _c_cv = _cv._c_cv; _c_dp = caca_create_display(_c_cv); } diff --git a/csharp/Cucul.cs b/csharp/Cucul.cs deleted file mode 100644 index 92470d0..0000000 --- a/csharp/Cucul.cs +++ /dev/null @@ -1,960 +0,0 @@ -/* - * libcucul .NET bindings for libcucul - * Copyright (c) 2006 Jean-Yves Lamoureux - * 2007 Sam Hocevar - * 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; -using System.Drawing; - -namespace Cucul -{ - /* Static libcucul stuff that does not fit in any object */ - public static class Libcucul - { - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_rand(int min, int max); - public static int Rand(int min, int max) - { - return cucul_rand(min, max); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern IntPtr cucul_get_version(); - public static string getVersion() - { - return Marshal.PtrToStringAnsi(cucul_get_version()); - } - - public const uint BLACK = 0x00, - BLUE = 0x01, - GREEN = 0x02, - CYAN = 0x03, - RED = 0x04, - MAGENTA = 0x05, - BROWN = 0x06, - LIGHTGRAY = 0x07, - DARKGRAY = 0x08, - LIGHTBLUE = 0x09, - LIGHTGREEN = 0x0a, - LIGHTCYAN = 0x0b, - LIGHTRED = 0x0c, - LIGHTMAGENTA = 0x0d, - YELLOW = 0x0e, - WHITE = 0x0f, - DEFAULT = 0x10, - TRANSPARENT = 0x20; - - public const uint BOLD = 0x01, - ITALICS = 0x02, - UNDERLINE = 0x04, - BLINK = 0x08; - } - - public class CuculCanvas : IDisposable - { - public readonly IntPtr _c_cv; - - /* libcucul basic functions */ - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern IntPtr cucul_create_canvas(int w, int h); - public CuculCanvas() - { - _c_cv = cucul_create_canvas(0, 0); - } - - public CuculCanvas(Size s) - { - _c_cv = cucul_create_canvas(s.Width, s.Height); - } - - public CuculCanvas(int w, int h) - { - _c_cv = cucul_create_canvas(h, w); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_free_canvas(IntPtr cv); - public void Dispose() - { - /* FIXME: don't destroy ourselves if we're attached */ - cucul_free_canvas(_c_cv); - GC.SuppressFinalize(this); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_canvas_size(IntPtr cv, - int w, int h); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_get_canvas_width(IntPtr cv); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_get_canvas_height(IntPtr cv); - public Size Size - { - get { return new Size(cucul_get_canvas_width(_c_cv), - cucul_get_canvas_height(_c_cv)); } - set { cucul_set_canvas_size(_c_cv, value.Width, value.Height); } - } - - public Rectangle Rectangle - { - get { return new Rectangle(0, 0, cucul_get_canvas_width(_c_cv), - cucul_get_canvas_height(_c_cv)); } - set { cucul_set_canvas_size(_c_cv, value.Width, value.Height); } - } - - /* canvas drawing */ - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_gotoxy(IntPtr cv, int x, int y); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_get_cursor_x(IntPtr cv); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_get_cursor_y(IntPtr cv); - public Point Cursor - { - get { return new Point(cucul_get_cursor_x(_c_cv), - cucul_get_cursor_y(_c_cv)); } - set { cucul_gotoxy(_c_cv, value.X, value.Y); } - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_put_char(IntPtr cv, - int x, int y, uint c); - public int putChar(Point p, uint c) - { - return cucul_put_char(_c_cv, p.X, p.Y, c); - } - - public int putChar(int x, int y, uint c) - { - return cucul_put_char(_c_cv, x, y, c); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern uint cucul_get_char(IntPtr cv, int x, int y); - public uint getChar(Point p) - { - return cucul_get_char(_c_cv, p.X, p.Y); - } - - public uint getChar(int x, int y) - { - return cucul_get_char(_c_cv, x, y); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_put_str(IntPtr cv, - int x, int y, string c); - public int putStr(Point p, string c) - { - return cucul_put_str(_c_cv, p.X, p.Y, c); - } - - public int putStr(int x, int y, string c) - { - return cucul_put_str(_c_cv, x, y, c); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_get_attr(IntPtr cv, int x, int y); - public int getAttr(Point p) - { - return cucul_get_attr(_c_cv, p.X, p.Y); - } - - public int getAttr(int x, int y) - { - return cucul_get_attr(_c_cv, x, y); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_attr(IntPtr cv, uint a); - public int setAttr(uint a) - { - return cucul_set_attr(_c_cv, a); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_put_attr(IntPtr cv, - int x, int y, uint a); - public int putAttr(Point p, uint a) - { - return cucul_put_attr(_c_cv, p.X, p.Y, a); - } - - public int putAttr(int x, int y, uint a) - { - return cucul_put_attr(_c_cv, x, y, a); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_color_ansi(IntPtr cv, - byte fg, byte bg); - public int setColorAnsi(uint fg, uint bg) - { - return cucul_set_color_ansi(_c_cv, (byte)fg, (byte)bg); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_color_argb(IntPtr cv, - uint fg, uint bg); - public int setColorArgb(uint fg, uint bg) - { - return cucul_set_color_argb(_c_cv, fg, bg); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_clear_canvas(IntPtr cv); - public int Clear() - { - return cucul_clear_canvas(_c_cv); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_canvas_handle(IntPtr cv, - int x, int y); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_get_canvas_handle_x(IntPtr cv); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_get_canvas_handle_y(IntPtr cv); - public Point Handle - { - get { return new Point(cucul_get_canvas_handle_x(_c_cv), - cucul_get_canvas_handle_y(_c_cv)); } - set { cucul_set_canvas_handle(_c_cv, value.X, value.Y); } - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_blit(IntPtr cv, int x, int y, - IntPtr cv1, IntPtr cv2); - public int Blit(Point p, CuculCanvas canvas) - { - return cucul_blit(_c_cv, p.X, p.Y, canvas._c_cv, IntPtr.Zero); - } - - public int Blit(Point p, CuculCanvas cv, CuculCanvas mask) - { - return cucul_blit(_c_cv, p.X, p.Y, cv._c_cv, mask._c_cv); - } - - public int Blit(int x, int y, CuculCanvas canvas) - { - return cucul_blit(_c_cv, x, y, canvas._c_cv, IntPtr.Zero); - } - - public int Blit(int x, int y, CuculCanvas cv, CuculCanvas mask) - { - return cucul_blit(_c_cv, x, y, cv._c_cv, mask._c_cv); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_canvas_boundaries(IntPtr cv, - int x, int y, - int h, int w); - public int setBoundaries(Rectangle r) - { - return cucul_set_canvas_boundaries(_c_cv, r.X, r.Y, - r.Width, r.Height); - } - - public int setBoundaries(int x, int y, int w, int h) - { - return cucul_set_canvas_boundaries(_c_cv, x, y, w, h); - } - - /* canvas transformation */ - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_invert(IntPtr cv); - public int Invert() - { - return cucul_invert(_c_cv); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_flip(IntPtr cv); - public int Flip() - { - return cucul_flip(_c_cv); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_flop(IntPtr cv); - public int Flop() - { - return cucul_flop(_c_cv); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_rotate_180(IntPtr cv); - public int Rotate180() - { - return cucul_rotate_180(_c_cv); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_rotate_left(IntPtr cv); - public int RotateLeft() - { - return cucul_rotate_left(_c_cv); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_rotate_right(IntPtr cv); - public int RotateRight() - { - return cucul_rotate_right(_c_cv); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_stretch_left(IntPtr cv); - public int StretchLeft() - { - return cucul_stretch_left(_c_cv); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_stretch_right(IntPtr cv); - public int StretchRight() - { - return cucul_stretch_right(_c_cv); - } - - /* primitives drawing */ - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_draw_line(IntPtr cv, int x1, int y1, - int x2, int y2, uint c); - public int drawLine(Point p1, Point p2, uint c) - { - return cucul_draw_line(_c_cv, p1.X, p1.Y, p2.X, p2.Y, c); - } - - public int drawLine(int x1, int y1, int x2, int y2, uint c) - { - return cucul_draw_line(_c_cv, x1, y1, x2, y2, c); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_draw_polyline(IntPtr cv, int[] x, - int[] y, int n, uint c); - public int drawPolyline(Point[] lp, uint c) - { - int[] lx = new int[lp.Length]; - int[] ly = new int[lp.Length]; - for(int i = 0; i < lp.Length; i++) - { - lx[i] = lp[i].X; - ly[i] = lp[i].Y; - } - return cucul_draw_polyline(_c_cv, lx, ly, lp.Length - 1, c); - } - - public int drawPolyline(int[] lx, int[] ly, uint c) - { - if(lx.Length != ly.Length) - return -1; - - return cucul_draw_polyline(_c_cv, lx, ly, lx.Length - 1, c); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_draw_thin_line(IntPtr cv, int x1, - int y1, int x2, int y2); - public int drawThinLine(Point p1, Point p2) - { - return cucul_draw_thin_line(_c_cv, p1.X, p1.Y, p2.X, p2.Y); - } - - public int drawThinLine(int x1, int y1, int x2, int y2) - { - return cucul_draw_thin_line(_c_cv, x1, y1, x2, y2); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_draw_thin_polyline(IntPtr cv, int[] x, - int[] y, int n); - public int drawThinPolyline(Point[] lp) - { - int[] lx = new int[lp.Length]; - int[] ly = new int[lp.Length]; - for(int i = 0; i < lp.Length; i++) - { - lx[i] = lp[i].X; - ly[i] = lp[i].Y; - } - return cucul_draw_thin_polyline(_c_cv, lx, ly, lp.Length - 1); - } - - public int drawThinPolyline(int[] lx, int[] ly) - { - if(lx.Length != ly.Length) - return -1; - - return cucul_draw_thin_polyline(_c_cv, lx, ly, lx.Length - 1); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_draw_circle(IntPtr cv, int x, int y, - int r, uint c); - public int drawCircle(Point p, int r, uint c) - { - return cucul_draw_circle(_c_cv, p.X, p.Y, r, c); - } - - public int drawCircle(int x, int y, int r, uint c) - { - return cucul_draw_circle(_c_cv, x, y, r, c); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_draw_ellipse(IntPtr cv, int x, int y, - int a, int b, uint c); - public int drawEllipse(Point p, int a, int b, uint c) - { - return cucul_draw_ellipse(_c_cv, p.X, p.Y, a, b, c); - } - - public int drawEllipse(int x, int y, int a, int b, uint c) - { - return cucul_draw_ellipse(_c_cv, x, y, a, b, c); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_draw_thin_ellipse(IntPtr cv, - int x, int y, - int a, int b); - public int drawThinEllipse(Point p, int a, int b) - { - return cucul_draw_thin_ellipse(_c_cv, p.X, p.Y, a, b); - } - - public int drawThinEllipse(int x, int y, int a, int b) - { - return cucul_draw_thin_ellipse(_c_cv, x, y, a, b); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_fill_ellipse(IntPtr cv, int x, int y, - int a, int b, uint c); - public int fillEllipse(Point p, int a, int b, uint c) - { - return cucul_fill_ellipse(_c_cv, p.X, p.Y, a, b, c); - } - - public int fillEllipse(int x, int y, int a, int b, uint c) - { - return cucul_fill_ellipse(_c_cv, x, y, a, b, c); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_draw_box(IntPtr cv, int x, int y, - int w, int h, uint c); - public int drawBox(Rectangle r, uint c) - { - return cucul_draw_box(_c_cv, r.X, r.Y, r.Width, r.Height, c); - } - - public int drawBox(int x, int y, int w, int h, uint c) - { - return cucul_draw_box(_c_cv, x, y, w, h, c); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_draw_thin_box(IntPtr cv, int x, int y, - int w, int h); - public int drawThinBox(Rectangle r) - { - return cucul_draw_thin_box(_c_cv, r.X, r.Y, r.Width, r.Height); - } - - public int drawThinBox(int x, int y, int w, int h) - { - return cucul_draw_thin_box(_c_cv, x, y, w, h); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_draw_cp437_box(IntPtr cv, int x, int y, - int w, int h); - public int drawCp437Box(Rectangle r) - { - return cucul_draw_cp437_box(_c_cv, r.X, r.Y, r.Width, r.Height); - } - - public int drawCp437Box(int x, int y, int w, int h) - { - return cucul_draw_cp437_box(_c_cv, x, y, w, h); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_fill_box(IntPtr cv, int x, int y, - int w, int h, uint c); - public int fillBox(Rectangle r, uint c) - { - return cucul_fill_box(_c_cv, r.X, r.Y, r.Width, r.Height, c); - } - - public int fillBox(int x, int y, int w, int h, uint c) - { - return cucul_fill_box(_c_cv, x, y, w, h, c); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_draw_triangle(IntPtr cv, int x1, - int y1, int x2, int y2, - int x3, int y3, uint c); - public int drawTriangle(Point p1, Point p2, Point p3, uint c) - { - return cucul_draw_triangle(_c_cv, p1.X, p1.Y, p2.X, p2.Y, - p3.X, p3.Y, c); - } - - public int drawTriangle(int x1, int y1, int x2, int y2, - int x3, int y3, uint c) - { - return cucul_draw_triangle(_c_cv, x1, y1, x2, y2, x3, y3, c); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_draw_thin_triangle(IntPtr cv, - int x1, int y1, - int x2, int y2, - int x3, int y3); - public int drawThinTriangle(Point p1, Point p2, Point p3) - { - return cucul_draw_thin_triangle(_c_cv, p1.X, p1.Y, p2.X, p2.Y, - p3.X, p3.Y); - } - - public int drawThinTriangle(int x1, int y1, int x2, int y2, - int x3, int y3) - { - return cucul_draw_thin_triangle(_c_cv, x1, y1, x2, y2, x3, y3); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_fill_triangle(IntPtr cv, int x1, - int y1, int x2, int y2, - int x3, int y3, uint c); - public int fillTriangle(Point p1, Point p2, Point p3, uint c) - { - return cucul_fill_triangle(_c_cv, p1.X, p1.Y, p2.X, p2.Y, - p3.X, p3.Y, c); - } - - public int fillTriangle(int x1, int y1, int x2, int y2, - int x3, int y3, uint c) - { - return cucul_fill_triangle(_c_cv, x1, y1, x2, y2, x3, y3, c); - } - - /* frame handling */ - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_get_frame_count(IntPtr cv); - public int getFrameCount() - { - return cucul_get_frame_count(_c_cv); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_frame(IntPtr cv, int f); - public int setFrame(int f) - { - return cucul_set_frame(_c_cv, f); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern string cucul_get_frame_name(IntPtr cv); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_frame_name(IntPtr cv, string n); - public string FrameName - { - get { return cucul_get_frame_name(_c_cv); } - set { cucul_set_frame_name(_c_cv, value); } - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_create_frame(IntPtr cv, int f); - public int createFrame(int f) - { - return cucul_create_frame(_c_cv, f); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_free_frame(IntPtr cv, int f); - public int freeFrame(int f) - { - return cucul_free_frame(_c_cv, f); - } - - /* bitmap dithering */ - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_dither_bitmap(IntPtr c, int x, int y, - int w, int h, - IntPtr d, IntPtr data); - public int ditherBitmap(Rectangle r, CuculDither d, object data) - { - GCHandle gch = GCHandle.Alloc(data, GCHandleType.Pinned); - int ret = cucul_dither_bitmap(_c_cv, r.X, r.Y, r.Width, r.Height, - d._dither, gch.AddrOfPinnedObject()); - gch.Free(); - return ret; - } - - public int ditherBitmap(int x, int y, int w, int h, - CuculDither d, object data) - { - GCHandle gch = GCHandle.Alloc(data, GCHandleType.Pinned); - int ret = cucul_dither_bitmap(_c_cv, x, y, w, h, d._dither, - gch.AddrOfPinnedObject()); - gch.Free(); - return ret; - } - } - - public class CuculAttr - { - private uint _attr; - - public CuculAttr(uint attr) - { - _attr = attr; - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern byte cucul_attr_to_ansi(uint a); - public byte toAnsi() - { - return cucul_attr_to_ansi(_attr); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern byte cucul_attr_to_ansi_fg(uint a); - public byte toAnsiFg() - { - return cucul_attr_to_ansi_fg(_attr); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern byte cucul_attr_to_ansi_bg(uint a); - public byte toAnsiBg() - { - return cucul_attr_to_ansi_bg(_attr); - } - } - - public class CuculDither : IDisposable - { - public readonly IntPtr _dither; - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern IntPtr cucul_create_dither(int bpp, int w, - int h, int pitch, - uint rmask, - uint gmask, - uint bmask, - uint amask); - public CuculDither(int bpp, Size s, int pitch, - uint rmask, uint gmask, uint bmask, uint amask) - { - _dither = cucul_create_dither(bpp, s.Width, s.Height, pitch, - rmask, gmask, bmask, amask); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_free_dither(IntPtr d); - public void Dispose() - { - cucul_free_dither(_dither); - GC.SuppressFinalize(this); - } - - /* TODO: fix this shit */ - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_dither_palette(IntPtr d, - uint[] r, uint[] g, - uint[] b, uint[] a); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_dither_brightness(IntPtr d, float b); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_dither_gamma(IntPtr d, float g); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_dither_contrast(IntPtr d, float c); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_dither_invert(IntPtr d, int i); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_dither_antialias(IntPtr d, string s); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern string[] cucul_get_dither_antialias_list(IntPtr d); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_dither_color(IntPtr d, string s); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern string[] cucul_get_dither_color_list(IntPtr d); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_dither_charset(IntPtr d, string s); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern string[] cucul_get_dither_charset_list(IntPtr d); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_set_dither_mode(IntPtr d, string s); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern string[] cucul_get_dither_mode_list(IntPtr d); - - - public int setBrightness(float b) - { - return cucul_set_dither_brightness(_dither, b); - } - - public int setGamma(float g) - { - return cucul_set_dither_gamma(_dither, g); - } - - public int setContrast(float c) - { - return cucul_set_dither_contrast(_dither, c); - } - - public int setInvert(int i) - { - return cucul_set_dither_invert(_dither, i); - } - - public int setAntialias(string s) - { - return cucul_set_dither_antialias(_dither, s); - } - - public int setColor(string s) - { - return cucul_set_dither_color(_dither, s); - } - - public int setCharset(string s) - { - return cucul_set_dither_charset(_dither, s); - } - - public int setMode(string s) - { - return cucul_set_dither_mode(_dither, s); - } - - /* */ - public string[] getAntialiasList() - { - return cucul_get_dither_antialias_list(_dither); - } - - public string[] getColorList() - { - return cucul_get_dither_color_list(_dither); - } - - public string[] getCharsetList() - { - return cucul_get_dither_charset_list(_dither); - } - - public string[] getModeList() - { - return cucul_get_dither_mode_list(_dither); - } - - /* */ - } - - public class CuculFont : IDisposable - { - private IntPtr _font; - private GCHandle _gch; - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern IntPtr cucul_load_font(IntPtr data, uint len); - public CuculFont(string s) - { - IntPtr name = Marshal.StringToHGlobalAnsi(s); - _font = cucul_load_font(name, 0); - Marshal.FreeHGlobal(name); - } - - public CuculFont(byte[] buf) - { - GCHandle _gch = GCHandle.Alloc(buf, GCHandleType.Pinned); - _font = cucul_load_font(_gch.AddrOfPinnedObject(), - (uint)buf.Length); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_free_font(IntPtr d); - public void Dispose() - { - cucul_free_font(_font); - _gch.Free(); - GC.SuppressFinalize(this); - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern IntPtr cucul_get_font_list(); - public static string[] getList() - { - IntPtr l = cucul_get_font_list(); - - int size; - for(size = 0; true; size++) - if(Marshal.ReadIntPtr(l, IntPtr.Size * size) == IntPtr.Zero) - break; - - string[] ret = new string[size]; - for(int i = 0; i < size; i++) - { - IntPtr s = Marshal.ReadIntPtr(l, IntPtr.Size * i); - ret[i] = Marshal.PtrToStringAnsi(s); - } - - return ret; - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_get_font_width(IntPtr font); - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_get_font_height(IntPtr font); - public Size Size - { - get { return new Size(cucul_get_font_width(_font), - cucul_get_font_height(_font)); } - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern IntPtr cucul_get_font_blocks(IntPtr font); - public int[,] getBlocks() - { - IntPtr l = cucul_get_font_blocks(_font); - - int size; - for(size = 1; true; size += 2) - if(Marshal.ReadIntPtr(l, IntPtr.Size * size) == IntPtr.Zero) - break; - - int[,] ret = new int[size,2]; - for(int i = 0; i < size; i++) - { - ret[i,0] = (int)Marshal.ReadIntPtr(l, IntPtr.Size * i * 2); - ret[i,1] = (int)Marshal.ReadIntPtr(l, IntPtr.Size * i * 2 + 1); - } - - return ret; - } - - [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl), - SuppressUnmanagedCodeSecurity] - private static extern int cucul_render_canvas(IntPtr cv, IntPtr f, - IntPtr buf, int w, int h, - int pitch); - public int Render(CuculCanvas cv, uint[,] buf, int pitch) - { - GCHandle gch = GCHandle.Alloc(buf, GCHandleType.Pinned); - int ret = cucul_render_canvas(cv._c_cv, _font, - gch.AddrOfPinnedObject(), - buf.GetLength(0), buf.GetLength(1), - pitch); - gch.Free(); - return ret; - } - } -} - diff --git a/csharp/Makefile.am b/csharp/Makefile.am index f97ed6c..8c166fc 100644 --- a/csharp/Makefile.am +++ b/csharp/Makefile.am @@ -2,7 +2,7 @@ cacadir = $(libdir)/caca-sharp -caca_sources = $(srcdir)/AssemblyInfo.cs $(srcdir)/Cucul.cs $(srcdir)/Caca.cs +caca_sources = $(srcdir)/AssemblyInfo.cs $(srcdir)/Caca.cs if USE_CSHARP caca_DATA = caca-sharp.dll caca-sharp.dll.config diff --git a/csharp/cucul-sharp.dll.config.in b/csharp/cucul-sharp.dll.config.in deleted file mode 100644 index 3b61b80..0000000 --- a/csharp/cucul-sharp.dll.config.in +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/csharp/test.cs b/csharp/test.cs index 4509b5e..c704e9c 100644 --- a/csharp/test.cs +++ b/csharp/test.cs @@ -18,16 +18,15 @@ using System; using System.Drawing; using System.Runtime.InteropServices; -using Cucul; using Caca; -class DemoCanvas : CuculCanvas +class DemoCanvas : CacaCanvas { private uint[,] image; private DateTime startTime; - private CuculDither d; - private CuculCanvas scroll; + private CacaDither d; + private CacaCanvas scroll; public DemoCanvas() { @@ -35,15 +34,15 @@ class DemoCanvas : CuculCanvas string message = " --- POWERED BY LIBCACA --- OLDSCHOOL TEXT EFFECTS ARE 100% PURE WIN"; - scroll = new CuculCanvas(new Size(message.Length, 1)); - scroll.setColorAnsi(Libcucul.WHITE, Libcucul.TRANSPARENT); + scroll = new CacaCanvas(new Size(message.Length, 1)); + scroll.setColorAnsi(Libcaca.WHITE, Libcaca.TRANSPARENT); scroll.putStr(new Point(0, 0), message); - CuculFont f = new CuculFont(CuculFont.getList()[1]); + CacaFont f = new CacaFont(CacaFont.getList()[1]); int w = f.Size.Width * message.Length; int h = f.Size.Height; image = new uint[w, h]; - d = new CuculDither(32, new Size(w, h), w * 4, + d = new CacaDither(32, new Size(w, h), w * 4, 0xff00, 0xff0000, 0xff000000, 0xff); f.Render(scroll, image, image.GetLength(0) * 4); } @@ -55,7 +54,7 @@ class DemoCanvas : CuculCanvas Clear(); - setColorAnsi(Libcucul.WHITE, Libcucul.BLACK); + setColorAnsi(Libcaca.WHITE, Libcaca.BLACK); for(int i = 0; i < barCount; i++) { double v = ((Math.Sin((t / 500.0) @@ -63,7 +62,7 @@ class DemoCanvas : CuculCanvas Point p1 = new Point(0, (int)v); Point p2 = new Point(Size.Width - 1, (int)v); - setColorAnsi((uint)(i + 9), Libcucul.BLACK); + setColorAnsi((uint)(i + 9), Libcaca.BLACK); /* drawLine is already clipped, we don't care about overflows */ drawLine(p1 + new Size(0, -2), p2 + new Size(0, -2), '-'); drawLine(p1 + new Size(0, -1), p2 + new Size(0, -1), '*'); @@ -79,9 +78,9 @@ class DemoCanvas : CuculCanvas ditherBitmap(new Rectangle(- x, h / 2 - y, w * 12, y * 2), d, image); ditherBitmap(new Rectangle(12 * w - x, h / 2 - y, w * 12, y * 2), d, image); - setColorAnsi(Libcucul.WHITE, Libcucul.BLUE); + setColorAnsi(Libcaca.WHITE, Libcaca.BLUE); putStr(new Point(-30, -2) + Size, " -=[ Powered by libcaca ]=- "); - setColorAnsi(Libcucul.WHITE, Libcucul.BLACK); + setColorAnsi(Libcaca.WHITE, Libcaca.BLACK); } } @@ -121,7 +120,7 @@ class Test Console.WriteLine("libcaca {0} .NET test", Libcaca.getVersion()); Console.WriteLine("(c) 2006 Jean-Yves Lamoureux "); - /* Instanciate a cucul canvas */ + /* Instanciate a caca canvas */ DemoCanvas cv = new DemoCanvas(); /* We have a proper canvas, let's display it using Caca */ @@ -129,7 +128,7 @@ class Test /* Random number. This is a static method, not to be used with previous instance */ - Console.WriteLine("A random number: {0}", Libcucul.Rand(0, 1337)); + Console.WriteLine("A random number: {0}", Libcaca.Rand(0, 1337)); dp.EventLoop(); } diff --git a/cxx/Makefile.am b/cxx/Makefile.am index f11c75e..19a00c2 100644 --- a/cxx/Makefile.am +++ b/cxx/Makefile.am @@ -10,7 +10,7 @@ include_HEADERS = caca++.h lib_LTLIBRARIES = libcaca++.la endif -libcaca___la_SOURCES = caca++.cpp cucul++.cpp caca++.h +libcaca___la_SOURCES = caca++.cpp caca++.h libcaca___la_LDFLAGS = -no-undefined -version-number @LT_VERSION@ libcaca___la_LIBADD = ../caca/libcaca.la diff --git a/cxx/caca++.cpp b/cxx/caca++.cpp index 127a13d..395b5c7 100644 --- a/cxx/caca++.cpp +++ b/cxx/caca++.cpp @@ -22,8 +22,405 @@ #include +#include // BUFSIZ +#include // va_* + #include "caca++.h" +uint32_t Charset::utf8ToUtf32(char const *s, size_t *read) +{ + return caca_utf8_to_utf32(s, read); +} +size_t Charset::utf32ToUtf8(char *buf, uint32_t ch) +{ + return caca_utf32_to_utf8(buf, ch); +} +uint8_t Charset::utf32ToCp437(uint32_t ch) +{ + return caca_utf32_to_cp437(ch); +} +uint32_t Charset::cp437ToUtf32(uint8_t ch) +{ + return caca_cp437_to_utf32(ch); +} + + +Canvas::Canvas() +{ + cv = caca_create_canvas(0, 0); + if(!cv) + throw -1; +} + +Canvas::Canvas(int width, int height) +{ + cv = caca_create_canvas(width, height); + if(!cv) throw -1; +} + +Canvas::~Canvas() +{ + if(cv) + caca_free_canvas(cv); +} + +caca_canvas_t *Canvas::get_caca_canvas_t() +{ + return cv; +} + +void Canvas::setSize(unsigned int width, unsigned int height) +{ + caca_set_canvas_size(cv, width, height); +} + +unsigned int Canvas::getWidth(void) +{ + return caca_get_canvas_width(cv); +} + +unsigned int Canvas::getHeight(void) +{ + return caca_get_canvas_height(cv); +} + +int Canvas::setColorANSI(uint8_t f, uint8_t b) +{ + return caca_set_color_ansi(cv, f, b); +} + +int Canvas::setColorARGB(unsigned int f, unsigned int b) +{ + return caca_set_color_argb(cv, f, b); +} + +void Canvas::putChar(int x, int y, uint32_t ch) +{ + caca_put_char(cv, x, y, ch); +} + +uint32_t Canvas::getChar(int x, int y) +{ + return caca_get_char(cv, x, y); +} + +void Canvas::putStr(int x, int y, char *str) +{ + caca_put_str(cv, x, y, str); +} + +void Canvas::Printf(int x, int y, char const * format, ...) +{ + char tmp[BUFSIZ]; + char *buf = tmp; + va_list args; + + va_start(args, format); +#if defined(HAVE_VSNPRINTF) + vsnprintf(buf, getWidth() - x + 1, format, args); +#else + vsprintf(buf, format, args); +#endif + buf[getWidth() - x] = '\0'; + va_end(args); + + putStr(x, y, buf); +} + +void Canvas::Clear(void) +{ + caca_clear_canvas(cv); +} + +void Canvas::Blit(int x, int y, Canvas* c1, Canvas* c2) +{ + caca_blit(cv, x, y, c1->get_caca_canvas_t(), + c2 ? c2->get_caca_canvas_t() : NULL); +} + +void Canvas::Invert() +{ + caca_invert(cv); +} + +void Canvas::Flip() +{ + caca_flip(cv); +} + +void Canvas::Flop() +{ + caca_flop(cv); +} + +void Canvas::Rotate180() +{ + caca_rotate_180(cv); +} + +void Canvas::RotateLeft() +{ + caca_rotate_left(cv); +} + +void Canvas::RotateRight() +{ + caca_rotate_right(cv); +} + +void Canvas::drawLine(int x1, int y1, int x2, int y2, uint32_t ch) +{ + caca_draw_line(cv, x1, y1, x2, y2, ch); +} + +void Canvas::drawPolyline(int const x[], int const y[], int f, uint32_t ch) +{ + caca_draw_polyline(cv, x, y, f, ch); +} + +void Canvas::drawThinLine(int x1, int y1, int x2, int y2) +{ + caca_draw_thin_line(cv, x1, y1, x2, y2); +} + +void Canvas::drawThinPolyline(int const x[], int const y[], int f) +{ + caca_draw_thin_polyline(cv, x, y, f); +} + +void Canvas::drawCircle(int x, int y, int d, uint32_t ch) +{ + caca_draw_circle(cv, x, y, d, ch); +} + +void Canvas::drawEllipse(int x, int y, int d1, int d2, uint32_t ch) +{ + caca_draw_ellipse(cv, x, y, d1, d2, ch); +} + +void Canvas::drawThinEllipse(int x, int y, int d1, int d2) +{ + caca_draw_thin_ellipse(cv, x, y, d1, d2); +} + +void Canvas::fillEllipse(int x, int y, int d1, int d2, uint32_t ch) +{ + caca_fill_ellipse(cv, x, y, d1, d2, ch); +} + +void Canvas::drawBox(int x, int y, int w, int h, uint32_t ch) +{ + caca_draw_box(cv, x, y, w, h, ch); +} + +void Canvas::drawThinBox(int x, int y, int w, int h) +{ + caca_draw_thin_box(cv, x, y, w, h); +} + +void Canvas::drawCP437Box(int x, int y, int w, int h) +{ + caca_draw_cp437_box(cv, x, y, w, h); +} + +void Canvas::fillBox(int x, int y, int w, int h, uint32_t ch) +{ + caca_fill_box(cv, x, y, w, h, ch); +} + +void Canvas::drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3, uint32_t ch) +{ + caca_draw_triangle(cv, x1, y1, x2, y2, x3, y3, ch); +} + +void Canvas::drawThinTriangle(int x1, int y1, int x2, int y2, int x3, int y3) +{ + caca_draw_thin_triangle(cv, x1, y1, x2, y2, x3, y3); +} + +void Canvas::fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3, uint32_t ch) +{ + caca_fill_triangle(cv, x1, y1, x2, y2, x3, y3, ch); +} + +int Canvas::Rand(int min, int max) +{ + return caca_rand(min, max); +} + +const char * Canvas::getVersion() +{ + return caca_get_version(); +} + +int Canvas::setAttr(uint32_t attr) +{ + return caca_set_attr(cv, attr); +} + +uint32_t Canvas::getAttr(int x, int y) +{ + return caca_get_attr(cv, x, y); +} + +int Canvas::setBoundaries(caca_canvas_t *, int x, int y, + unsigned int w, unsigned int h) +{ + return caca_set_canvas_boundaries(cv, x, y, h, w); +} + +unsigned int Canvas::getFrameCount() +{ + return caca_get_frame_count(cv); +} +int Canvas::setFrame(unsigned int f) +{ + return caca_set_frame(cv, f); +} +int Canvas::createFrame(unsigned int f) +{ + return caca_create_frame(cv, f); +} +int Canvas::freeFrame(unsigned int f) +{ + return caca_create_frame(cv, f); +} + +char const *const * Canvas::getImportList(void) +{ + return caca_get_import_list(); +} + +long int Canvas::importMemory(void const *buf, size_t len, char const *fmt) +{ + return caca_import_memory(cv, buf, len, fmt); +} + +long int Canvas::importFile(char const *file, char const *fmt) +{ + return caca_import_file(cv, file, fmt); +} + +char const *const * Canvas::getExportList(void) +{ + return caca_get_export_list(); +} + +void *Canvas::exportMemory(char const *fmt, size_t *len) +{ + return caca_export_memory(cv, fmt, len); +} + +Dither::Dither(unsigned int v1, unsigned int v2, unsigned int v3, unsigned int v4, unsigned int v5, unsigned int v6, unsigned int v7, unsigned int v8) +{ + dither = caca_create_dither(v1, v2, v3, v4, v5, v6, v7, v8); +} +Dither::~Dither() +{ + caca_free_dither(dither); +} + +void Dither::setPalette(uint32_t r[], uint32_t g[], uint32_t b[], uint32_t a[]) +{ + caca_set_dither_palette(dither, r, g, b, a); +} + +void Dither::setBrightness(float f) +{ + caca_set_dither_brightness(dither, f); +} + +void Dither::setGamma(float f) +{ + caca_set_dither_gamma(dither, f); +} + +void Dither::setContrast(float f) +{ + caca_set_dither_contrast(dither, f); +} + +void Dither::setAntialias(char const *cv) +{ + caca_set_dither_antialias(dither, cv); +} + +char const *const * Dither::getAntialiasList() +{ + return caca_get_dither_antialias_list(dither); +} + +void Dither::setColor(char const *cv) +{ + caca_set_dither_color(dither, cv); +} + +char const *const * Dither::getColorList() +{ + return caca_get_dither_color_list(dither); +} + +void Dither::setCharset(char const *cv) +{ + caca_set_dither_charset(dither, cv); +} + +char const *const * Dither::getCharsetList() +{ + return caca_get_dither_charset_list(dither); +} + +void Dither::setMode(char const *cv) +{ + caca_set_dither_algorithm(dither, cv); +} + +char const *const * Dither::getModeList(void) +{ + return caca_get_dither_algorithm_list(dither); +} + +void Dither::Bitmap(Canvas *cv, int x, int y, int w, int h, void *v) +{ + caca_dither_bitmap(cv->get_caca_canvas_t(), x, y, w, h, dither, v); +} + +Font::Font(void const *s, unsigned int v) +{ + font = caca_load_font(s, v); + if(!font) throw -1; +} + +char const *const * Font::getList(void) +{ + return caca_get_font_list(); +} + +unsigned int Font::getWidth() +{ + return caca_get_font_width(font); +} + +unsigned int Font::getHeight() +{ + return caca_get_font_height(font); +} + +void Font::renderCanvas(Canvas *cv, uint8_t *buf, unsigned int x, unsigned int y, unsigned int w) +{ + caca_render_canvas(cv->get_caca_canvas_t(), font, buf, x, y, w); +} + +uint32_t const *Font::getBlocks() +{ + return caca_get_font_blocks(font); +} + +Font::~Font() +{ + caca_free_font(font); +} + Caca::Caca(Canvas *cv) { dp = caca_create_display(cv->get_caca_canvas_t()); diff --git a/cxx/caca++.h b/cxx/caca++.h index 49d32af..515fc32 100644 --- a/cxx/caca++.h +++ b/cxx/caca++.h @@ -24,8 +24,6 @@ #define _CACA_PP_H #include -#include -#include #undef __class #if defined(_WIN32) && defined(__LIBCACA_PP__) @@ -34,6 +32,126 @@ # define __class class #endif +class Canvas; + +__class Charset +{ + public: + uint32_t utf8ToUtf32(char const *, size_t *); + size_t utf32ToUtf8(char *, uint32_t); + uint8_t utf32ToCp437(uint32_t); + uint32_t cp437ToUtf32(uint8_t); +}; + +/* Ugly, I know */ +__class Font +{ + public: + ~Font(); + Font(void const *, unsigned int); + char const *const * getList(void); + unsigned int getWidth(); + unsigned int getHeight(); + void renderCanvas(Canvas *, uint8_t *, unsigned int, + unsigned int, unsigned int); + uint32_t const *getBlocks(); + + private: + caca_font *font; +}; + +__class Dither +{ + public: + Dither(unsigned int, unsigned int, unsigned int, unsigned int, + unsigned int, unsigned int, unsigned int, unsigned int); + ~Dither(); + + void setPalette(uint32_t r[], uint32_t g[], + uint32_t b[], uint32_t a[]); + void setBrightness(float); + void setGamma(float); + void setContrast(float); + void setAntialias(char const *); + char const *const * getAntialiasList(); + void setColor(char const *); + char const *const * getColorList(); + void setCharset(char const *); + char const *const * getCharsetList(); + void setMode(char const *); + char const *const * getModeList(); + void Bitmap(Canvas *, int, int, int, int, void *); + + private: + caca_dither *dither; +}; + +__class Canvas +{ + friend class Caca; + friend class Dither; + friend class Font; + public: + Canvas(); + Canvas(int width, int height); + ~Canvas(); + + void setSize(unsigned int w, unsigned int h); + unsigned int getWidth(void); + unsigned int getHeight(void); + uint32_t getAttr(int, int); + int setAttr(uint32_t); + int setColorANSI(uint8_t f, uint8_t b); + int setColorARGB(unsigned int f, unsigned int b); + void Printf(int x, int y , char const * format, ...); + void putChar(int x, int y, uint32_t ch); + uint32_t getChar(int, int); + void putStr(int x, int y, char *str); + void Clear(void); + void Blit(int, int, Canvas* c1, Canvas* c2); + void Invert(); + void Flip(); + void Flop(); + void Rotate180(); + void RotateLeft(); + void RotateRight(); + void drawLine(int, int, int, int, uint32_t); + void drawPolyline(int const x[], int const y[], int, uint32_t); + void drawThinLine(int, int, int, int); + void drawThinPolyline(int const x[], int const y[], int); + void drawCircle(int, int, int, uint32_t); + void drawEllipse(int, int, int, int, uint32_t); + void drawThinEllipse(int, int, int, int); + void fillEllipse(int, int, int, int, uint32_t); + void drawBox(int, int, int, int, uint32_t); + void drawThinBox(int, int, int, int); + void drawCP437Box(int, int, int, int); + void fillBox(int, int, int, int, uint32_t); + void drawTriangle(int, int, int, int, int, int, uint32_t); + void drawThinTriangle(int, int, int, int, int, int); + void fillTriangle(int, int, int, int, int, int, uint32_t); + int setBoundaries(caca_canvas_t *, int, int, unsigned int, unsigned int); + unsigned int getFrameCount(); + int setFrame(unsigned int); + int createFrame(unsigned int); + int freeFrame(unsigned int); + + char const * const * getImportList(void); + long int importMemory(void const *, size_t, char const *); + long int importFile(char const *, char const *); + char const * const * getExportList(void); + void *exportMemory(char const *, size_t *); + + static int Rand(int, int); + static char const * getVersion(); + + protected: + caca_canvas_t *get_caca_canvas_t(); + + private: + caca_canvas_t *cv; +}; + __class Event { friend class Caca; diff --git a/cxx/cucul++.cpp b/cxx/cucul++.cpp deleted file mode 100644 index 30a7218..0000000 --- a/cxx/cucul++.cpp +++ /dev/null @@ -1,421 +0,0 @@ -/* - * libcaca++ C++ bindings for libcaca - * Copyright (c) 2006 Jean-Yves Lamoureux - * 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. - */ - -/* - * This file contains the main functions used by \e libcaca++ applications - * to initialise a drawing context. - */ - -#include "config.h" - -#include // BUFSIZ -#include // va_* - -#include "caca++.h" - - -uint32_t Charset::utf8ToUtf32(char const *s, size_t *read) -{ - return caca_utf8_to_utf32(s, read); -} -size_t Charset::utf32ToUtf8(char *buf, uint32_t ch) -{ - return caca_utf32_to_utf8(buf, ch); -} -uint8_t Charset::utf32ToCp437(uint32_t ch) -{ - return caca_utf32_to_cp437(ch); -} -uint32_t Charset::cp437ToUtf32(uint8_t ch) -{ - return caca_cp437_to_utf32(ch); -} - - -Canvas::Canvas() -{ - cv = caca_create_canvas(0, 0); - if(!cv) - throw -1; -} - -Canvas::Canvas(int width, int height) -{ - cv = caca_create_canvas(width, height); - if(!cv) throw -1; -} - -Canvas::~Canvas() -{ - if(cv) - caca_free_canvas(cv); -} - -caca_canvas_t *Canvas::get_caca_canvas_t() -{ - return cv; -} - -void Canvas::setSize(unsigned int width, unsigned int height) -{ - caca_set_canvas_size(cv, width, height); -} - -unsigned int Canvas::getWidth(void) -{ - return caca_get_canvas_width(cv); -} - -unsigned int Canvas::getHeight(void) -{ - return caca_get_canvas_height(cv); -} - -int Canvas::setColorANSI(uint8_t f, uint8_t b) -{ - return caca_set_color_ansi(cv, f, b); -} - -int Canvas::setColorARGB(unsigned int f, unsigned int b) -{ - return caca_set_color_argb(cv, f, b); -} - -void Canvas::putChar(int x, int y, uint32_t ch) -{ - caca_put_char(cv, x, y, ch); -} - -uint32_t Canvas::getChar(int x, int y) -{ - return caca_get_char(cv, x, y); -} - -void Canvas::putStr(int x, int y, char *str) -{ - caca_put_str(cv, x, y, str); -} - -void Canvas::Printf(int x, int y, char const * format, ...) -{ - char tmp[BUFSIZ]; - char *buf = tmp; - va_list args; - - va_start(args, format); -#if defined(HAVE_VSNPRINTF) - vsnprintf(buf, getWidth() - x + 1, format, args); -#else - vsprintf(buf, format, args); -#endif - buf[getWidth() - x] = '\0'; - va_end(args); - - putStr(x, y, buf); -} - -void Canvas::Clear(void) -{ - caca_clear_canvas(cv); -} - -void Canvas::Blit(int x, int y, Canvas* c1, Canvas* c2) -{ - caca_blit(cv, x, y, c1->get_caca_canvas_t(), - c2 ? c2->get_caca_canvas_t() : NULL); -} - -void Canvas::Invert() -{ - caca_invert(cv); -} - -void Canvas::Flip() -{ - caca_flip(cv); -} - -void Canvas::Flop() -{ - caca_flop(cv); -} - -void Canvas::Rotate180() -{ - caca_rotate_180(cv); -} - -void Canvas::RotateLeft() -{ - caca_rotate_left(cv); -} - -void Canvas::RotateRight() -{ - caca_rotate_right(cv); -} - -void Canvas::drawLine(int x1, int y1, int x2, int y2, uint32_t ch) -{ - caca_draw_line(cv, x1, y1, x2, y2, ch); -} - -void Canvas::drawPolyline(int const x[], int const y[], int f, uint32_t ch) -{ - caca_draw_polyline(cv, x, y, f, ch); -} - -void Canvas::drawThinLine(int x1, int y1, int x2, int y2) -{ - caca_draw_thin_line(cv, x1, y1, x2, y2); -} - -void Canvas::drawThinPolyline(int const x[], int const y[], int f) -{ - caca_draw_thin_polyline(cv, x, y, f); -} - -void Canvas::drawCircle(int x, int y, int d, uint32_t ch) -{ - caca_draw_circle(cv, x, y, d, ch); -} - -void Canvas::drawEllipse(int x, int y, int d1, int d2, uint32_t ch) -{ - caca_draw_ellipse(cv, x, y, d1, d2, ch); -} - -void Canvas::drawThinEllipse(int x, int y, int d1, int d2) -{ - caca_draw_thin_ellipse(cv, x, y, d1, d2); -} - -void Canvas::fillEllipse(int x, int y, int d1, int d2, uint32_t ch) -{ - caca_fill_ellipse(cv, x, y, d1, d2, ch); -} - -void Canvas::drawBox(int x, int y, int w, int h, uint32_t ch) -{ - caca_draw_box(cv, x, y, w, h, ch); -} - -void Canvas::drawThinBox(int x, int y, int w, int h) -{ - caca_draw_thin_box(cv, x, y, w, h); -} - -void Canvas::drawCP437Box(int x, int y, int w, int h) -{ - caca_draw_cp437_box(cv, x, y, w, h); -} - -void Canvas::fillBox(int x, int y, int w, int h, uint32_t ch) -{ - caca_fill_box(cv, x, y, w, h, ch); -} - -void Canvas::drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3, uint32_t ch) -{ - caca_draw_triangle(cv, x1, y1, x2, y2, x3, y3, ch); -} - -void Canvas::drawThinTriangle(int x1, int y1, int x2, int y2, int x3, int y3) -{ - caca_draw_thin_triangle(cv, x1, y1, x2, y2, x3, y3); -} - -void Canvas::fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3, uint32_t ch) -{ - caca_fill_triangle(cv, x1, y1, x2, y2, x3, y3, ch); -} - -int Canvas::Rand(int min, int max) -{ - return caca_rand(min, max); -} - -const char * Canvas::getVersion() -{ - return caca_get_version(); -} - -int Canvas::setAttr(uint32_t attr) -{ - return caca_set_attr(cv, attr); -} - -uint32_t Canvas::getAttr(int x, int y) -{ - return caca_get_attr(cv, x, y); -} - -int Canvas::setBoundaries(caca_canvas_t *, int x, int y, - unsigned int w, unsigned int h) -{ - return caca_set_canvas_boundaries(cv, x, y, h, w); -} - -unsigned int Canvas::getFrameCount() -{ - return caca_get_frame_count(cv); -} -int Canvas::setFrame(unsigned int f) -{ - return caca_set_frame(cv, f); -} -int Canvas::createFrame(unsigned int f) -{ - return caca_create_frame(cv, f); -} -int Canvas::freeFrame(unsigned int f) -{ - return caca_create_frame(cv, f); -} - -char const *const * Canvas::getImportList(void) -{ - return caca_get_import_list(); -} - -long int Canvas::importMemory(void const *buf, size_t len, char const *fmt) -{ - return caca_import_memory(cv, buf, len, fmt); -} - -long int Canvas::importFile(char const *file, char const *fmt) -{ - return caca_import_file(cv, file, fmt); -} - -char const *const * Canvas::getExportList(void) -{ - return caca_get_export_list(); -} - -void *Canvas::exportMemory(char const *fmt, size_t *len) -{ - return caca_export_memory(cv, fmt, len); -} - -Dither::Dither(unsigned int v1, unsigned int v2, unsigned int v3, unsigned int v4, unsigned int v5, unsigned int v6, unsigned int v7, unsigned int v8) -{ - dither = caca_create_dither(v1, v2, v3, v4, v5, v6, v7, v8); -} -Dither::~Dither() -{ - caca_free_dither(dither); -} - -void Dither::setPalette(uint32_t r[], uint32_t g[], uint32_t b[], uint32_t a[]) -{ - caca_set_dither_palette(dither, r, g, b, a); -} - -void Dither::setBrightness(float f) -{ - caca_set_dither_brightness(dither, f); -} - -void Dither::setGamma(float f) -{ - caca_set_dither_gamma(dither, f); -} - -void Dither::setContrast(float f) -{ - caca_set_dither_contrast(dither, f); -} - -void Dither::setAntialias(char const *cv) -{ - caca_set_dither_antialias(dither, cv); -} - -char const *const * Dither::getAntialiasList() -{ - return caca_get_dither_antialias_list(dither); -} - -void Dither::setColor(char const *cv) -{ - caca_set_dither_color(dither, cv); -} - -char const *const * Dither::getColorList() -{ - return caca_get_dither_color_list(dither); -} - -void Dither::setCharset(char const *cv) -{ - caca_set_dither_charset(dither, cv); -} - -char const *const * Dither::getCharsetList() -{ - return caca_get_dither_charset_list(dither); -} - -void Dither::setMode(char const *cv) -{ - caca_set_dither_algorithm(dither, cv); -} - -char const *const * Dither::getModeList(void) -{ - return caca_get_dither_algorithm_list(dither); -} - -void Dither::Bitmap(Canvas *cv, int x, int y, int w, int h, void *v) -{ - caca_dither_bitmap(cv->get_caca_canvas_t(), x, y, w, h, dither, v); -} - -Font::Font(void const *s, unsigned int v) -{ - font = caca_load_font(s, v); - if(!font) throw -1; -} - -char const *const * Font::getList(void) -{ - return caca_get_font_list(); -} - -unsigned int Font::getWidth() -{ - return caca_get_font_width(font); -} - -unsigned int Font::getHeight() -{ - return caca_get_font_height(font); -} - -void Font::renderCanvas(Canvas *cv, uint8_t *buf, unsigned int x, unsigned int y, unsigned int w) -{ - caca_render_canvas(cv->get_caca_canvas_t(), font, buf, x, y, w); -} - -uint32_t const *Font::getBlocks() -{ - return caca_get_font_blocks(font); -} - -Font::~Font() -{ - caca_free_font(font); -} - diff --git a/cxx/cucul++.h b/cxx/cucul++.h deleted file mode 100644 index 7ddb326..0000000 --- a/cxx/cucul++.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * libcaca++ C++ bindings for libcaca - * Copyright (c) 2006 Jean-Yves Lamoureux - * 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. - */ - -/** \file caca++.h - * \version \$Id$ - * \author Jean-Yves Lamoureux - * \brief The \e libcaca++ public header. - * - * This header contains the public types and functions that applications - * using \e libcaca++ may use. - */ - -#ifndef _CUCUL_PP_H -#define _CUCUL_PP_H - -#include - -#undef __class -#if defined(_WIN32) && defined(__LIBCACA_PP__) -# define __class class __declspec(dllexport) -#else -# define __class class -#endif - -class Canvas; - -__class Charset -{ - public: - uint32_t utf8ToUtf32(char const *, size_t *); - size_t utf32ToUtf8(char *, uint32_t); - uint8_t utf32ToCp437(uint32_t); - uint32_t cp437ToUtf32(uint8_t); -}; - -/* Ugly, I know */ -__class Font -{ - public: - ~Font(); - Font(void const *, unsigned int); - char const *const * getList(void); - unsigned int getWidth(); - unsigned int getHeight(); - void renderCanvas(Canvas *, uint8_t *, unsigned int, - unsigned int, unsigned int); - uint32_t const *getBlocks(); - - private: - caca_font *font; -}; - -__class Dither -{ - public: - Dither(unsigned int, unsigned int, unsigned int, unsigned int, - unsigned int, unsigned int, unsigned int, unsigned int); - ~Dither(); - - void setPalette(uint32_t r[], uint32_t g[], - uint32_t b[], uint32_t a[]); - void setBrightness(float); - void setGamma(float); - void setContrast(float); - void setAntialias(char const *); - char const *const * getAntialiasList(); - void setColor(char const *); - char const *const * getColorList(); - void setCharset(char const *); - char const *const * getCharsetList(); - void setMode(char const *); - char const *const * getModeList(); - void Bitmap(Canvas *, int, int, int, int, void *); - - private: - caca_dither *dither; -}; - -__class Canvas -{ - friend class Caca; - friend class Dither; - friend class Font; - public: - Canvas(); - Canvas(int width, int height); - ~Canvas(); - - void setSize(unsigned int w, unsigned int h); - unsigned int getWidth(void); - unsigned int getHeight(void); - uint32_t getAttr(int, int); - int setAttr(uint32_t); - int setColorANSI(uint8_t f, uint8_t b); - int setColorARGB(unsigned int f, unsigned int b); - void Printf(int x, int y , char const * format, ...); - void putChar(int x, int y, uint32_t ch); - uint32_t getChar(int, int); - void putStr(int x, int y, char *str); - void Clear(void); - void Blit(int, int, Canvas* c1, Canvas* c2); - void Invert(); - void Flip(); - void Flop(); - void Rotate180(); - void RotateLeft(); - void RotateRight(); - void drawLine(int, int, int, int, uint32_t); - void drawPolyline(int const x[], int const y[], int, uint32_t); - void drawThinLine(int, int, int, int); - void drawThinPolyline(int const x[], int const y[], int); - void drawCircle(int, int, int, uint32_t); - void drawEllipse(int, int, int, int, uint32_t); - void drawThinEllipse(int, int, int, int); - void fillEllipse(int, int, int, int, uint32_t); - void drawBox(int, int, int, int, uint32_t); - void drawThinBox(int, int, int, int); - void drawCP437Box(int, int, int, int); - void fillBox(int, int, int, int, uint32_t); - void drawTriangle(int, int, int, int, int, int, uint32_t); - void drawThinTriangle(int, int, int, int, int, int); - void fillTriangle(int, int, int, int, int, int, uint32_t); - int setBoundaries(caca_canvas_t *, int, int, unsigned int, unsigned int); - unsigned int getFrameCount(); - int setFrame(unsigned int); - int createFrame(unsigned int); - int freeFrame(unsigned int); - - char const * const * getImportList(void); - long int importMemory(void const *, size_t, char const *); - long int importFile(char const *, char const *); - char const * const * getExportList(void); - void *exportMemory(char const *, size_t *); - - static int Rand(int, int); - static char const * getVersion(); - - protected: - caca_canvas_t *get_caca_canvas_t(); - - private: - caca_canvas_t *cv; -}; - -#endif /* _CUCUL_PP_H */ diff --git a/cxx/cucul++.pc.in b/cxx/cucul++.pc.in deleted file mode 100644 index aaab39f..0000000 --- a/cxx/cucul++.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: cucul++ -Description: Canvas for ultrafast compositing of Unicode letters C++ binding -Version: @VERSION@ -Requires: -Conflicts: -Libs: -L${libdir} -lcucul++ -Cflags: -I${includedir} diff --git a/cxx/cxxtest.cpp b/cxx/cxxtest.cpp index 145b16a..feca7ba 100644 --- a/cxx/cxxtest.cpp +++ b/cxx/cxxtest.cpp @@ -15,7 +15,6 @@ #include #include -#include #include using namespace std; diff --git a/msvc/caca-sharp.csproj b/msvc/caca-sharp.csproj index 51ce039..990bada 100755 --- a/msvc/caca-sharp.csproj +++ b/msvc/caca-sharp.csproj @@ -37,12 +37,6 @@ - - - {C05C1521-F4E2-48D8-BD83-786EF345A887} - cucul-sharp - - - \ No newline at end of file + diff --git a/msvc/cucul_types.h b/msvc/caca_types.h similarity index 100% rename from msvc/cucul_types.h rename to msvc/caca_types.h diff --git a/msvc/cucul-sharp.csproj b/msvc/cucul-sharp.csproj deleted file mode 100755 index 610cfa1..0000000 --- a/msvc/cucul-sharp.csproj +++ /dev/null @@ -1,46 +0,0 @@ - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {C05C1521-F4E2-48D8-BD83-786EF345A887} - Library - Properties - cucul_sharp.vsproj - cucul-sharp.vsproj - - - true - full - false - Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - Release\ - TRACE - prompt - 4 - - - - - - - - - - - - \ No newline at end of file diff --git a/msvc/libcaca++.vcproj b/msvc/libcaca++.vcproj index 01ddd94..a4d34bc 100644 --- a/msvc/libcaca++.vcproj +++ b/msvc/libcaca++.vcproj @@ -38,7 +38,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -238,6 +306,14 @@ RelativePath="..\caca\caca_internals.h" > + + + + diff --git a/msvc/libcucul++.def b/msvc/libcucul++.def deleted file mode 100644 index e69de29..0000000 diff --git a/msvc/libcucul++.vcproj b/msvc/libcucul++.vcproj deleted file mode 100644 index c447032..0000000 --- a/msvc/libcucul++.vcproj +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/msvc/libcucul.def b/msvc/libcucul.def deleted file mode 100644 index e69de29..0000000 diff --git a/msvc/libcucul.vcproj b/msvc/libcucul.vcproj deleted file mode 100644 index 326d571..0000000 --- a/msvc/libcucul.vcproj +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ruby/Makefile.am b/ruby/Makefile.am index f0e8888..d4f226b 100644 --- a/ruby/Makefile.am +++ b/ruby/Makefile.am @@ -30,7 +30,6 @@ caca_la_LIBADD = ../caca/libcaca.la EXTRA_DIST = ruby.dox \ ruby-caca.dox \ - ruby-cucul.dox \ lib/caca.rb \ t/tc_canvas.rb \ t/tc_dither.rb \ diff --git a/ruby/README b/ruby/README index b89104f..5b98c32 100644 --- a/ruby/README +++ b/ruby/README @@ -1,4 +1,4 @@ -This a Ruby binding for libcucul and libcaca. +This a Ruby binding for libcaca. -You can play with it by doing require 'caca' or require 'cucul' and looking at -the Cucul and Caca modules, or maybe read the documentation :) +You can play with it by doing require 'caca' and looking at +the Caca module, or maybe read the documentation :) diff --git a/ruby/caca-canvas.c b/ruby/caca-canvas.c index 2d8e98f..1be6564 100644 --- a/ruby/caca-canvas.c +++ b/ruby/caca-canvas.c @@ -211,7 +211,7 @@ static VALUE blit(int argc, VALUE* argv, VALUE self) { if(CLASS_OF(src) != cCanvas) { - rb_raise(rb_eArgError, "src is not a Cucul::Canvas"); + rb_raise(rb_eArgError, "src is not a Caca::Canvas"); } Data_Get_Struct(src, caca_canvas_t, csrc); @@ -219,7 +219,7 @@ static VALUE blit(int argc, VALUE* argv, VALUE self) { { if(CLASS_OF(mask) != cCanvas) { - rb_raise(rb_eArgError, "mask is not a Cucul::Canvas"); + rb_raise(rb_eArgError, "mask is not a Caca::Canvas"); } Data_Get_Struct(mask, caca_canvas_t, cmask); } @@ -447,7 +447,7 @@ static VALUE fill_triangle(VALUE self, VALUE x1, VALUE y1, VALUE x2, VALUE y2, V static VALUE dither_bitmap(VALUE self, VALUE x, VALUE y, VALUE w, VALUE h, VALUE d, VALUE pixels) { if(CLASS_OF(d) != cDither) - rb_raise(rb_eArgError, "d is not a Cucul::Dither"); + rb_raise(rb_eArgError, "d is not a Caca::Dither"); Check_Type(pixels, T_STRING); caca_dither_bitmap(_SELF, NUM2INT(x), NUM2INT(y), NUM2INT(w), NUM2INT(h), DATA_PTR(d), StringValuePtr(pixels)); @@ -517,7 +517,7 @@ static VALUE render_canvas(VALUE self, VALUE font, VALUE width, VALUE height, VA if(CLASS_OF(font) != cFont) { - rb_raise(rb_eArgError, "First argument is not a Cucul::Font"); + rb_raise(rb_eArgError, "First argument is not a Caca::Font"); } buf = malloc(width*height*4); @@ -570,9 +570,9 @@ get_singleton_double_list(import) /****/ -void Init_caca_canvas(VALUE mCucul) +void Init_caca_canvas(VALUE mCaca) { - cCanvas = rb_define_class_under(mCucul, "Canvas", rb_cObject); + cCanvas = rb_define_class_under(mCaca, "Canvas", rb_cObject); rb_define_alloc_func(cCanvas, canvas_alloc); rb_define_method(cCanvas, "initialize", canvas_initialize, 2); diff --git a/ruby/caca-display.c b/ruby/caca-display.c index fd275ac..eaf0a69 100644 --- a/ruby/caca-display.c +++ b/ruby/caca-display.c @@ -45,7 +45,7 @@ static VALUE display_initialize(int argc, VALUE* argv, VALUE self) cv = arg1; if(CLASS_OF(arg2) == cCanvas) { - rb_raise(rb_eArgError, "Only one argument can be a Cucul::Canvas"); + rb_raise(rb_eArgError, "Only one argument can be a Caca::Canvas"); } } else if(CLASS_OF(arg2) == cCanvas) diff --git a/ruby/caca-dither.c b/ruby/caca-dither.c index 59981df..91ceb58 100644 --- a/ruby/caca-dither.c +++ b/ruby/caca-dither.c @@ -179,9 +179,9 @@ get_set_str_from_list(color) get_set_str_from_list(charset) get_set_str_from_list(algorithm) -void Init_caca_dither(VALUE mCucul) +void Init_caca_dither(VALUE mCaca) { - cDither = rb_define_class_under(mCucul, "Dither", rb_cObject); + cDither = rb_define_class_under(mCaca, "Dither", rb_cObject); rb_define_alloc_func(cDither, dither_alloc); rb_define_method(cDither, "initialize", dither_initialize, 8); diff --git a/ruby/caca-font.c b/ruby/caca-font.c index 8eceebd..abcfbbe 100644 --- a/ruby/caca-font.c +++ b/ruby/caca-font.c @@ -85,9 +85,9 @@ static VALUE get_font_blocks(VALUE self) return ary; } -void Init_caca_font(VALUE mCucul) +void Init_caca_font(VALUE mCaca) { - cFont = rb_define_class_under(mCucul, "Font", rb_cObject); + cFont = rb_define_class_under(mCaca, "Font", rb_cObject); rb_define_alloc_func(cFont, font_alloc); rb_define_method(cFont, "initialize", font_initialize, 1); diff --git a/ruby/lib/caca.rb b/ruby/lib/caca.rb index 8815442..d7b5923 100644 --- a/ruby/lib/caca.rb +++ b/ruby/lib/caca.rb @@ -1,4 +1,3 @@ -require 'cucul' require 'caca.so' module Caca diff --git a/ruby/ruby-caca.dox b/ruby/ruby-caca.dox index 38ca770..99b1202 100644 --- a/ruby/ruby-caca.dox +++ b/ruby/ruby-caca.dox @@ -1,90 +1,176 @@ -/* $Id$ */ /** \page libcaca-ruby-api Libcaca Ruby API +/*$Id$ */ /** \page libcaca-ruby-api Libcaca Ruby API -The classes available for libcaca are : +Theclasses available for libcaca are : -\li \b Caca::Display -\li \b Caca::Event -\li \b Caca::Event::Key -\li \b Caca::Event::Key::Press -\li \b Caca::Event::Key::Release -\li \b Caca::Event::Mouse -\li \b Caca::Event::Mouse::Press -\li \b Caca::Event::Mouse::Release -\li \b Caca::Event::Mouse::Motion -\li \b Caca::Event::Resize -\li \b Caca::Event::Quit +\li\b Caca::Canvas : functions that have a caca_canvas_t* as first argument +\li\b Caca::Dither : functions that have a caca_dither_t* as first argument +\li\b Caca::Font : functions that have a caca_font_t* as first argument +(The constructor can currently only accept the name of a builtin font) +\li\b Caca::Display +\li\b Caca::Event +\li\b Caca::Event::Key +\li\b Caca::Event::Key::Press +\li\b Caca::Event::Key::Release +\li\b Caca::Event::Mouse +\li\b Caca::Event::Mouse::Press +\li\b Caca::Event::Mouse::Release +\li\b Caca::Event::Mouse::Motion +\li\b Caca::Event::Resize +\li\b Caca::Event::Quit + +Thecharacter set conversion functions are not available yet in the binding. + +\code +$irb -rcaca +irb(main):001:0>class Object +irb(main):002:1>def Object.my_instance_methods +irb(main):003:2>instance_methods.sort - ancestors[1].instance_methods +irb(main):004:2>end +irb(main):005:1>def Object.my_methods +irb(main):006:2>methods.sort - ancestors[1].methods +irb(main):007:2>end +irb(main):008:1>end +\endcode + +\code +irb(main):009:0>Caca.constants +=>["BROWN", "BOLD", "GREEN", "LIGHTMAGENTA", "LIGHTBLUE", "BLINK", +"MAGENTA","DEFAULT", "TRANSPARENT", "BLUE", "LIGHTRED", "DARKGRAY", +"UNDERLINE","RED", "WHITE", "BLACK", "LIGHTCYAN", "LIGHTGRAY", +"ITALICS","CYAN", "YELLOW", "LIGHTGREEN", "Canvas", "Dither", "Font"] +\endcode + +\code +irb(main):010:0>Caca.my_methods +=>["version"] +\endcode + +\code +irb(main):011:0>Caca::Canvas.my_methods +=>["export_list", "import_list"] +\endcode + +\code +irb(main):012:0>Caca::Canvas.my_instance_methods +=>["attr=", "blit", "clear", "create_frame", "cursor_x", "cursor_y", +"dither_bitmap","draw_box", "draw_circle", "draw_cp437_box", "draw_ellipse", +"draw_line","draw_polyline", "draw_thin_box", "draw_thin_ellipse", +"draw_thin_line","draw_thin_polyline", "draw_thin_triangle", +"draw_triangle","export_memory", "fill_box", "fill_ellipse", +"fill_triangle","flip", "flop", "frame=", "frame_count", "frame_name", +"frame_name=","free_frame", "get_attr", "get_char", "gotoxy", +"handle_x","handle_y", "height", "height=", "import_file", +"import_memory","invert", "printf", "put_attr", "put_char", "put_str", +"rotate_180","rotate_left", "rotate_right", "set_attr", +"set_boundaries","set_color_ansi", "set_color_argb", "set_frame", +"set_frame_name","set_handle", "set_height", "set_size", "set_width", +"stretch_left","stretch_right", "width", "width="] +\endcode + +\code +irb(main):013:0>Caca::Font.my_methods +=>["list"] +\endcode \code -$ irb -rcaca -irb(main):001:0> class Object -irb(main):002:1> def Object.my_instance_methods -irb(main):003:2> instance_methods.sort - ancestors[1].instance_methods -irb(main):004:2> end -irb(main):005:1> def Object.my_methods -irb(main):006:2> methods.sort - ancestors[1].methods -irb(main):007:2> end -irb(main):008:1> end +irb(main):014:0>Caca::Font.my_instance_methods +=>["blocks", "height", "width"] \endcode \code -irb(main):009:0> Caca.my_methods -=> ["version"] +irb(main):015:0>Caca::Dither.my_instance_methods +=>["algorithm=", "algorithm_list", "antialias=", "antialias_list", +"brightness=","charset=", "charset_list", "color=", "color_list", +"contrast=","gamma=", "palette=", "set_algorithm", "set_antialias", +"set_brightness","set_charset", "set_color", "set_contrast", +"set_gamma","set_palette"] \endcode \code -irb(main):010:0> Caca::Display.my_instance_methods -=> ["canvas", "get_event", "height", "mouse=", "mouse_x", "mouse_y", "refresh", -"set_mouse", "set_time", "set_title", "time", "time=", "title=", "width"] +irb(main):010:0>Caca::Display.my_instance_methods +=>["canvas", "get_event", "height", "mouse=", "mouse_x", "mouse_y", "refresh", +"set_mouse","set_time", "set_title", "time", "time=", "title=", "width"] \endcode \code -irb(main):011:0> Caca::Event.constants -=> ["Key", "Quit", "TYPE", "Mouse", "Resize"] +irb(main):011:0>Caca::Event.constants +=>["Key", "Quit", "TYPE", "Mouse", "Resize"] \endcode \code -irb(main):012:0> Caca::Event.my_instance_methods -=> ["quit?"] +irb(main):012:0>Caca::Event.my_instance_methods +=>["quit?"] \endcode \code -irb(main):013:0> Caca::Event::Key.my_instance_methods -=> ["ch", "utf32", "utf8"] +irb(main):013:0>Caca::Event::Key.my_instance_methods +=>["ch", "utf32", "utf8"] \endcode \code -irb(main):014:0> Caca::Event::Mouse.my_instance_methods -=> ["button", "x", "y"] +irb(main):014:0>Caca::Event::Mouse.my_instance_methods +=>["button", "x", "y"] \endcode \code -irb(main):015:0> Caca::Event::Resize.my_instance_methods -=> ["w", "h"] +irb(main):015:0>Caca::Event::Resize.my_instance_methods +=>["w", "h"] \endcode -\section Samples +\sectionSamples + +\code +$ruby -rcaca -e 'c=Caca::Canvas.new(6, 3).fill_box(0,0,2,2,"#"[0]); +c2=Caca::Canvas.new(1,1).put_str(0,0,"x"); c.blit(1,1,c2); puts +c.export_memory("irc")' +### +#x# +### +\endcode \code -require 'caca' -c = Cucul::Canvas.new(20,10) -c.put_str(2, 3, "plop!") -c.draw_thin_polyline([[0,0], [0,2], [5,2], [0,0]]) -d = Caca::Display.new(c) -d.title = "Test !" +$ruby -e 'puts Caca::Canvas.new(6,3).draw_thin_polyline([[0,0], [0,2], +[5,2],[0,0]]).export_memory("irc")' +-. +|`. +----`- +\endcode + +\code +$ruby -rcaca -e 'p Caca::Canvas.export_list' +[["caca","native libcaca format"], ["ansi", "ANSI"], ["utf8", "UTF-8 +withANSI escape codes"], ["utf8cr", "UTF-8 with ANSI escape codes and +MS-DOS\\r"], ["html", "HTML"], ["html3", "backwards-compatible HTML"], +["irc","IRC with mIRC colours"], ["ps", "PostScript document"], ["svg", +"SVGvector image"], ["tga", "TGA image"]] +\endcode + +\code +$ruby -rcaca -e 'p Caca::Font.list' +["Monospace9", "Monospace Bold 12"] +\endcode + +\code +require'caca' +c= Caca::Canvas.new(20,10) +c.put_str(2,3, "plop!") +c.draw_thin_polyline([[0,0],[0,2], [5,2], [0,0]]) +d= Caca::Display.new(c) +d.title= "Test !" d.refresh -# Redefine Event::Key#quit? so that q, Q, and Esc become exit keys -module Caca - class Event::Key - def quit? - "qQ^[".split('').member?(@ch.chr) - end - end +#Redefine Event::Key#quit? so that q, Q, and Esc become exit keys +moduleCaca +class Event::Key +def quit? +"qQ^[".split('').member?(@ch.chr) +end +end end -while((e = d.get_event(Caca::Event, -1)) && ! e.quit?) - p e - d.refresh +while((e= d.get_event(Caca::Event, -1)) && ! e.quit?) +p e +d.refresh end \endcode diff --git a/ruby/ruby-cucul.dox b/ruby/ruby-cucul.dox deleted file mode 100644 index 55c9c98..0000000 --- a/ruby/ruby-cucul.dox +++ /dev/null @@ -1,112 +0,0 @@ -/* $Id$ */ /** \page libcucul-ruby-api Libcucul Ruby API -The classes available for libcucul are : - -\li \b Cucul::Canvas : functions that have a cucul_canvas_t* as first argument - -\li \b Cucul::Dither : functions that have a cucul_dither_t* as first argument - -\li \b Cucul::Font : functions that have a cucul_font_t* as first argument - (The constructor can currently only accept the name of a builtin font) - -The character set conversion functions are not available yet in the binding. - -\code -$ irb -rcucul -irb(main):001:0> class Object -irb(main):002:1> def Object.my_instance_methods -irb(main):003:2> instance_methods.sort - ancestors[1].instance_methods -irb(main):004:2> end -irb(main):005:1> def Object.my_methods -irb(main):006:2> methods.sort - ancestors[1].methods -irb(main):007:2> end -irb(main):008:1> end -\endcode - -\code -irb(main):009:0> Cucul.constants -=> ["BROWN", "BOLD", "GREEN", "LIGHTMAGENTA", "LIGHTBLUE", "BLINK", -"MAGENTA", "DEFAULT", "TRANSPARENT", "BLUE", "LIGHTRED", "DARKGRAY", -"UNDERLINE", "RED", "WHITE", "BLACK", "LIGHTCYAN", "LIGHTGRAY", -"ITALICS", "CYAN", "YELLOW", "LIGHTGREEN", "Canvas", "Dither", "Font"] -\endcode - -\code -irb(main):010:0> Cucul.my_methods -=> ["version"] -\endcode - -\code -irb(main):011:0> Cucul::Canvas.my_methods -=> ["export_list", "import_list"] -\endcode - -\code -irb(main):012:0> Cucul::Canvas.my_instance_methods -=> ["attr=", "blit", "clear", "create_frame", "cursor_x", "cursor_y", -"dither_bitmap", "draw_box", "draw_circle", "draw_cp437_box", "draw_ellipse", -"draw_line", "draw_polyline", "draw_thin_box", "draw_thin_ellipse", -"draw_thin_line", "draw_thin_polyline", "draw_thin_triangle", -"draw_triangle", "export_memory", "fill_box", "fill_ellipse", -"fill_triangle", "flip", "flop", "frame=", "frame_count", "frame_name", -"frame_name=", "free_frame", "get_attr", "get_char", "gotoxy", -"handle_x", "handle_y", "height", "height=", "import_file", -"import_memory", "invert", "printf", "put_attr", "put_char", "put_str", -"rotate_180", "rotate_left", "rotate_right", "set_attr", -"set_boundaries", "set_color_ansi", "set_color_argb", "set_frame", -"set_frame_name", "set_handle", "set_height", "set_size", "set_width", -"stretch_left", "stretch_right", "width", "width="] -\endcode - -\code -irb(main):013:0> Cucul::Font.my_methods -=> ["list"] -\endcode - -\code -irb(main):014:0> Cucul::Font.my_instance_methods -=> ["blocks", "height", "width"] -\endcode - -\code -irb(main):015:0> Cucul::Dither.my_instance_methods -=> ["algorithm=", "algorithm_list", "antialias=", "antialias_list", -"brightness=", "charset=", "charset_list", "color=", "color_list", -"contrast=", "gamma=", "palette=", "set_algorithm", "set_antialias", -"set_brightness", "set_charset", "set_color", "set_contrast", -"set_gamma", "set_palette"] -\endcode - -\section Samples - -\code -$ ruby -rcucul -e 'c=Cucul::Canvas.new(6, 3).fill_box(0,0,2,2,"#"[0]); -c2=Cucul::Canvas.new(1, 1).put_str(0,0,"x"); c.blit(1,1,c2); puts -c.export_memory("irc")' -### -#x# -### -\endcode - -\code -$ ruby -e 'puts Cucul::Canvas.new(6,3).draw_thin_polyline([[0,0], [0,2], -[5,2],[0,0]]).export_memory("irc")' --. -| `. -----`- -\endcode - -\code -$ ruby -rcucul -e 'p Cucul::Canvas.export_list' -[["caca", "native libcaca format"], ["ansi", "ANSI"], ["utf8", "UTF-8 -with ANSI escape codes"], ["utf8cr", "UTF-8 with ANSI escape codes and -MS-DOS \\r"], ["html", "HTML"], ["html3", "backwards-compatible HTML"], -["irc", "IRC with mIRC colours"], ["ps", "PostScript document"], ["svg", -"SVG vector image"], ["tga", "TGA image"]] -\endcode - -\code -$ ruby -rcucul -e 'p Cucul::Font.list' -["Monospace 9", "Monospace Bold 12"] -\endcode - -*/ diff --git a/ruby/t/tc_canvas.rb b/ruby/t/tc_canvas.rb index 271f0fa..53b774a 100644 --- a/ruby/t/tc_canvas.rb +++ b/ruby/t/tc_canvas.rb @@ -1,12 +1,12 @@ require 'test/unit' -require 'cucul' +require 'caca' class TC_Canvas < Test::Unit::TestCase def setup - @c = Cucul::Canvas.new(3, 3) + @c = Caca::Canvas.new(3, 3) end def test_create - c = Cucul::Canvas.new(3, 3) + c = Caca::Canvas.new(3, 3) assert_not_nil(c, 'Canvas creation failed') assert(c.width == 3 && c.height == 3, 'Wrong size for new canvas') end @@ -45,13 +45,13 @@ class TC_Canvas < Test::Unit::TestCase assert_equal(42, @c.get_char(1,1)) end def test_render - c = Cucul::Canvas.new(4,4) + c = Caca::Canvas.new(4,4) c.put_str(0,0,"plop") - f = Cucul::Font.new(Cucul::Font.list[0]) + f = Caca::Font.new(Caca::Font.list[0]) assert_not_nil(c.render(f, c.width*f.width, c.height*f.height, c.width*f.width*4)) end def test_fail_render - c = Cucul::Canvas.new(4,4) + c = Caca::Canvas.new(4,4) assert_raise(ArgumentError) { c.render(nil, c.width, c.height, c.width*4) } diff --git a/ruby/t/tc_display.rb b/ruby/t/tc_display.rb index 9c6ed07..82aa3b5 100644 --- a/ruby/t/tc_display.rb +++ b/ruby/t/tc_display.rb @@ -14,17 +14,17 @@ class TC_Canvas < Test::Unit::TestCase assert_raise(RuntimeError){Caca::Display.new("plop")} driver = Caca::Display.driver_list[0] assert_raise(ArgumentError){Caca::Display.new(driver, driver)} - c = Cucul::Canvas.new(3, 3) + c = Caca::Canvas.new(3, 3) assert_raise(ArgumentError){Caca::Display.new(c, c)} end def test_create_from_canvas - c = Cucul::Canvas.new(3, 3) + c = Caca::Canvas.new(3, 3) d = Caca::Display.new(c) assert_not_nil(d, 'Display creation failed') assert_equal(d.canvas, c, 'Wrong canvas') end def test_set_title - c = Cucul::Canvas.new(3, 3) + c = Caca::Canvas.new(3, 3) d = Caca::Display.new(c) d.title = "Test !" end diff --git a/ruby/t/tc_dither.rb b/ruby/t/tc_dither.rb index e69ce46..130df1d 100644 --- a/ruby/t/tc_dither.rb +++ b/ruby/t/tc_dither.rb @@ -1,50 +1,50 @@ require 'test/unit' -require 'cucul' +require 'caca' class TC_Canvas < Test::Unit::TestCase def test_create assert_nothing_raised { - d = Cucul::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) + d = Caca::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) } end def test_fail_create assert_raise(RuntimeError) { - d = Cucul::Dither.new(-1, 32, 32, 32, 0, 0, 0, 0) + d = Caca::Dither.new(-1, 32, 32, 32, 0, 0, 0, 0) } end def test_set_palette assert_nothing_raised { - d = Cucul::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) + d = Caca::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) d.palette=[[0xfff, 0xfff, 0xfff, 0xfff]]*256 } end def test_fail_set_palette assert_raise(ArgumentError) { - d = Cucul::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) + d = Caca::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) d.palette=[] } end def test_fail_set_palette2 assert_raise(RuntimeError) { - d = Cucul::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) + d = Caca::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) d.palette=[[0xffff, 0, 0, 0]]*256 } end def test_set_brightness assert_nothing_raised { - d = Cucul::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) + d = Caca::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) d.brightness=0.5 } end def test_set_gamma assert_nothing_raised { - d = Cucul::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) + d = Caca::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) d.gamma=0.5 } end def test_set_contrast assert_nothing_raised { - d = Cucul::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) + d = Caca::Dither.new(8, 32, 32, 32, 0, 0, 0, 0) d.contrast=0.5 } end diff --git a/ruby/t/tc_font.rb b/ruby/t/tc_font.rb index ca06e2d..6e14c5c 100644 --- a/ruby/t/tc_font.rb +++ b/ruby/t/tc_font.rb @@ -1,13 +1,13 @@ require 'test/unit' -require 'cucul' +require 'caca' class TC_Canvas < Test::Unit::TestCase def test_list - assert_not_nil(Cucul::Font.list) + assert_not_nil(Caca::Font.list) end def test_load - Cucul::Font.list.each{|f| - font = Cucul::Font.new(f) + Caca::Font.list.each{|f| + font = Caca::Font.new(f) assert_not_nil(font) assert_not_nil(font.width) assert_not_nil(font.height) @@ -16,7 +16,7 @@ class TC_Canvas < Test::Unit::TestCase end def test_fail_load assert_raise(RuntimeError) { - Cucul::Font.new("This font should not exist") + Caca::Font.new("This font should not exist") } end end diff --git a/ruby/t/tc_frame.rb b/ruby/t/tc_frame.rb index f6908e1..0a2630a 100644 --- a/ruby/t/tc_frame.rb +++ b/ruby/t/tc_frame.rb @@ -1,9 +1,9 @@ require 'test/unit' -require 'cucul' +require 'caca' class TC_Frame < Test::Unit::TestCase def setup - @c = Cucul::Canvas.new(3, 3) + @c = Caca::Canvas.new(3, 3) end def test_create f = @c.create_frame(1)