Changeset 2058


Ignore:
Timestamp:
Nov 25, 2007, 6:12:59 PM (13 years ago)
Author:
Sam Hocevar
Message:
  • Implemented C# bindings for ditherBitmap() and added it to the C# test.
Location:
libcaca/trunk/csharp
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/csharp/AssemblyInfo.cs

    r2044 r2058  
    11/*
    2  *  AssemblyInfo      .NET bindings for libcaca
     2 *  AssemblyInfo  .NET bindings for libcaca
    33 *  Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>
    44 *                All Rights Reserved
  • libcaca/trunk/csharp/Caca.cs

    r2052 r2058  
    11/*
    2  *  libcaca    .NET bindings for libcaca
     2 *  libcaca       .NET bindings for libcaca
    33 *  Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>
     4 *                2007 Sam Hocevar <sam@zoy.org>
    45 *                All Rights Reserved
    56 *
  • libcaca/trunk/csharp/Cucul.cs

    r2046 r2058  
    11/*
    2  *  libcucul   .NET bindings for libcucul
     2 *  libcucul      .NET bindings for libcucul
    33 *  Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>
     4 *                2007 Sam Hocevar <sam@zoy.org>
    45 *                All Rights Reserved
    56 *
     
    348349
    349350        /* frame handling */
    350         /* FIXME: clean up this shit */
    351351
    352352        [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl),
    353353         SuppressUnmanagedCodeSecurity]
    354354        private static extern int cucul_get_frame_count(IntPtr cv);
     355        public int getFrameCount()
     356        {
     357            return cucul_get_frame_count(_cv);
     358        }
     359
    355360        [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl),
    356361         SuppressUnmanagedCodeSecurity]
    357362        private static extern int cucul_set_frame(IntPtr cv, int f);
     363        public int setFrame(int f)
     364        {
     365            return cucul_set_frame(_cv, f);
     366        }
     367
    358368        [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl),
    359369         SuppressUnmanagedCodeSecurity]
     
    362372         SuppressUnmanagedCodeSecurity]
    363373        private static extern int cucul_set_frame_name(IntPtr cv, string n);
     374        public string frameName
     375        {
     376            get { return cucul_get_frame_name(_cv); }
     377            set { cucul_set_frame_name(_cv, value); }
     378        }
     379
    364380        [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl),
    365381         SuppressUnmanagedCodeSecurity]
    366382        private static extern int cucul_create_frame(IntPtr cv, int f);
     383        public int createFrame(int f)
     384        {
     385            return cucul_create_frame(_cv, f);
     386        }
     387
    367388        [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl),
    368389         SuppressUnmanagedCodeSecurity]
    369390        private static extern int cucul_free_frame(IntPtr cv, int f);
    370 
    371         public int getFrameCount()
    372         {
    373             return cucul_get_frame_count(_cv);
    374         }
    375 
    376         public int setFrame(int f)
    377         {
    378             return cucul_set_frame(_cv, f);
    379         }
    380 
    381         public string getFrameName()
    382         {
    383             return cucul_get_frame_name(_cv);
    384         }
    385 
    386         public int setFrameName(string n)
    387         {
    388             return cucul_set_frame_name(_cv, n);
    389         }
    390 
    391         public int createFrame(int f)
    392         {
    393             return cucul_create_frame(_cv, f);
    394         }
    395 
    396391        public int freeFrame(int f)
    397392        {
    398393            return cucul_free_frame(_cv, f);
     394        }
     395
     396        /* bitmap dithering */
     397
     398        [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl),
     399         SuppressUnmanagedCodeSecurity]
     400        private static extern int cucul_dither_bitmap(IntPtr c, int  x, int y,
     401                                                      int w, int h,
     402                                                      IntPtr d, IntPtr data);
     403        public int ditherBitmap(int x, int y, int w, int h, CuculDither d,
     404                                object data)
     405        {
     406            GCHandle gch = GCHandle.Alloc(data);
     407            int ret = cucul_dither_bitmap(_cv, x, y, w, h, d._dither,
     408                                          gch.AddrOfPinnedObject());
     409            gch.Free();
     410            return ret;
    399411        }
    400412    }
     
    436448    public unsafe class CuculDither : IDisposable
    437449    {
    438     [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl),
    439          SuppressUnmanagedCodeSecurity]
    440       private static extern IntPtr cucul_create_dither(int bpp, int w,
    441                                                       int h, int pitch,
    442                                                       Int64 rmask,
    443                                                       Int64 gmask,
    444                                                       Int64 bmask,
    445                                                       Int64 amask);
    446 
     450        public readonly IntPtr _dither;
     451
     452        [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl),
     453         SuppressUnmanagedCodeSecurity]
     454        private static extern IntPtr cucul_create_dither(int bpp, int w,
     455                                                         int h, int pitch,
     456                                                         ulong rmask,
     457                                                         ulong gmask,
     458                                                         ulong bmask,
     459                                                         ulong amask);
     460        public CuculDither(int bpp, int w,int h, int pitch,
     461                           uint rmask, uint gmask, uint bmask, uint amask)
     462        {
     463            _dither = cucul_create_dither(bpp, w, h, pitch,
     464                                          rmask, gmask, bmask, amask);
     465        }
     466
     467        [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl),
     468         SuppressUnmanagedCodeSecurity]
     469        private static extern int cucul_free_dither(IntPtr d);
     470        public void Dispose()
     471        {
     472            cucul_free_dither(_dither);
     473            GC.SuppressFinalize(this);
     474        }
     475
     476        /* TODO: fix this shit */
    447477
    448478        [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl),
     
    487517         SuppressUnmanagedCodeSecurity]
    488518        private static extern string[] cucul_get_dither_mode_list(IntPtr d);
    489         [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl),
    490          SuppressUnmanagedCodeSecurity]
    491         private static extern int cucul_free_dither(IntPtr d);
    492 
    493   /* FIXME  [DllImport("libcucul.dll", CallingConvention=CallingConvention.Cdecl),
    494          SuppressUnmanagedCodeSecurity]
    495       int cucul_dither_bitmap(Canvas c, int  x, int y, int w , int y,
    496                          IntPtr d2, void *);*/
    497 
    498         IntPtr _dither;
    499 
    500         public CuculDither(int bpp, int w,int h, int pitch,
    501                            Int64 rmask, Int64 gmask,Int64 bmask, Int64 amask)
    502         {
    503             _dither = cucul_create_dither(bpp, w, h, pitch, rmask, gmask, bmask, amask);
    504         }
    505 
    506         public void Dispose()
    507         {
    508             cucul_free_dither(_dither);
    509             GC.SuppressFinalize(this);
    510         }
     519
    511520
    512521        public int setBrightness(float b)
  • libcaca/trunk/csharp/test.cs

    r2052 r2058  
    11/*
    2  *  Test      .NET bindings test program
     2 *  Test          .NET bindings test program
    33 *  Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>
     4 *                2007 Sam Hocevar <sam@zoy.org>
    45 *                All Rights Reserved
    56 *
     
    1516
    1617using System;
     18using System.Runtime.InteropServices;
    1719
    1820using Cucul;
     
    2123class DemoCanvas : CuculCanvas
    2224{
     25    private uint[,] table;
     26
    2327    private DateTime startTime;
     28    private CuculDither d;
    2429
    2530    public DemoCanvas()
    2631    {
    2732        startTime = DateTime.Now;
     33
     34        table = new uint[16,16];
     35        d = new CuculDither(32, 16, 16, 16 * 4, 0xff0000, 0xff00, 0xff, 0x0);
     36        for(int y = 0; y < 16; y++)
     37            for(int x = 0; x < 16; x++)
     38                table[x,y] = (uint)((x + y) << 16) | (uint)(x << 8) | (uint)(y);
    2839    }
    2940
     
    3445
    3546        Clear();
     47
     48        ditherBitmap(0, 0, width, height, d, table);
    3649
    3750        setColorAnsi(Libcucul.WHITE, Libcucul.BLACK);
Note: See TracChangeset for help on using the changeset viewer.