Example #1
0
        protected AreaBase(IAreaHandler handler)
        {
            var areaHandlerInternal = new AreaHandler
            {
                DragBroken = (areaHandler, area) =>
                {
                    var realArea = Areas[area];
                    handler.DragBroken(realArea);
                },
                Draw = (IntPtr areaHandler, IntPtr area, ref AreaDrawParamsInternal param) =>
                {
                    var realArea = Areas[area];
                    var p        = (AreaDrawParams)param;
                    handler.Draw(realArea, ref p);
                },
                KeyEvent = (IntPtr areaHandler, IntPtr area, ref AreaKeyEvent keyEvent) =>
                {
                    var realArea = Areas[area];
                    return(handler.KeyEvent(realArea, ref keyEvent));
                },
                MouseCrossed = (areaHandler, area, left) =>
                {
                    var realArea = Areas[area];
                    handler.MouseCrossed(realArea, left);
                },
                MouseEvent = (IntPtr areaHandler, IntPtr area, ref AreaMouseEvent mouseEvent) =>
                {
                    var realArea = Areas[area];
                    handler.MouseEvent(realArea, ref mouseEvent);
                }
            };


            AreaHandlerInternal = new AreaHandlerInternal
            {
                DragBroken   = Marshal.GetFunctionPointerForDelegate(areaHandlerInternal.DragBroken),
                Draw         = Marshal.GetFunctionPointerForDelegate(areaHandlerInternal.Draw),
                KeyEvent     = Marshal.GetFunctionPointerForDelegate(areaHandlerInternal.KeyEvent),
                MouseCrossed = Marshal.GetFunctionPointerForDelegate(areaHandlerInternal.MouseCrossed),
                MouseEvent   = Marshal.GetFunctionPointerForDelegate(areaHandlerInternal.MouseEvent)
            };;
        }