private void UpdateTitle(string title)
 {
     using (var buffer = new Utf8Buffer(string.IsNullOrWhiteSpace(title) ? "" : title))
     {
         Title = buffer.DangerousGetHandle();
     }
 }
Exemple #2
0
 public void SetTitle(string title)
 {
     using (var buffer = new Utf8Buffer(title))
     {
         _native.SetTitle(buffer.DangerousGetHandle());
     }
 }
 public void ShaderSourceString(int shader, string source)
 {
     using (var b = new Utf8Buffer(source))
     {
         var ptr = b.DangerousGetHandle();
         var len = new IntPtr(b.ByteLen);
         ShaderSource(shader, 1, new IntPtr(&ptr), new IntPtr(&len));
     }
 }
 private void UpdateGesture(Input.KeyGesture gesture)
 {
     // todo ensure backend can cope with setting null gesture.
     using (var buffer = new Utf8Buffer(gesture == null ? "" : OsxUnicodeKeys.ConvertOSXSpecialKeyCodes(gesture.Key)))
     {
         var modifiers = gesture == null ? AvnInputModifiers.AvnInputModifiersNone : (AvnInputModifiers)gesture.KeyModifiers;
         SetGesture(buffer.DangerousGetHandle(), modifiers);
     }
 }
Exemple #5
0
 public void SetupApplicationName()
 {
     if (!string.IsNullOrWhiteSpace(Application.Current.Name))
     {
         using (var buffer = new Utf8Buffer(Application.Current.Name))
         {
             _factory.MacOptions.SetApplicationTitle(buffer.DangerousGetHandle());
         }
     }
 }
Exemple #6
0
        private void AddItemsToMenu(IAvnAppMenu menu, ICollection <NativeMenuItemBase> items, bool isMainMenu = false)
        {
            foreach (var i in items)
            {
                if (i is NativeMenuItem item)
                {
                    var menuItem = _factory.CreateMenuItem();

                    AddMenuItem(item);

                    menuItem.SetAction(new PredicateCallback(() =>
                    {
                        if (item.Command != null || item.HasClickHandlers)
                        {
                            return(item.Enabled);
                        }

                        return(false);
                    }), new MenuActionCallback(() => { item.RaiseClick(); }));

                    if (item.Menu?.Items.Count > 0 || isMainMenu)
                    {
                        var subMenu = CreateSubmenu(item.Menu?.Items);

                        menuItem.SetSubMenu(subMenu);

                        using (var buffer = new Utf8Buffer(item.Header))
                        {
                            subMenu.Title = buffer.DangerousGetHandle();
                        }
                    }
                    else
                    {
                        using (var buffer = new Utf8Buffer(item.Header))
                        {
                            menuItem.Title = buffer.DangerousGetHandle();
                        }

                        if (item.Gesture != null)
                        {
                            using (var buffer = new Utf8Buffer(item.Gesture.Key.ToString().ToLower()))
                            {
                                menuItem.SetGesture(buffer.DangerousGetHandle(), (AvnInputModifiers)item.Gesture.KeyModifiers);
                            }
                        }
                    }

                    menu.AddItem(menuItem);
                }
                else if (i is NativeMenuItemSeperator seperator)
                {
                    menu.AddItem(_factory.CreateMenuItemSeperator());
                }
            }
        }
Exemple #7
0
        private void SetChildren(IAvnAppMenu menu, ICollection <NativeMenuItemBase> children)
        {
            foreach (var i in children)
            {
                if (i is NativeMenuItem item)
                {
                    AddMenuItem(item);

                    var menuItem = _factory.CreateMenuItem();

                    using (var buffer = new Utf8Buffer(item.Header))
                    {
                        menuItem.Title = buffer.DangerousGetHandle();
                    }

                    if (item.Gesture != null)
                    {
                        using (var buffer = new Utf8Buffer(ConvertOSXSpecialKeyCodes(item.Gesture.Key)))
                        {
                            menuItem.SetGesture(buffer.DangerousGetHandle(), (AvnInputModifiers)item.Gesture.KeyModifiers);
                        }
                    }

                    menuItem.SetAction(new PredicateCallback(() =>
                    {
                        if (item.Command != null || item.HasClickHandlers)
                        {
                            return(item.Enabled);
                        }

                        return(false);
                    }), new MenuActionCallback(() => { item.RaiseClick(); }));
                    menu.AddItem(menuItem);

                    if (item.Menu?.Items?.Count > 0)
                    {
                        var submenu = _factory.CreateMenu();

                        using (var buffer = new Utf8Buffer(item.Header))
                        {
                            submenu.Title = buffer.DangerousGetHandle();
                        }

                        menuItem.SetSubMenu(submenu);

                        AddItemsToMenu(submenu, item.Menu?.Items);
                    }
                }
                else if (i is NativeMenuItemSeperator seperator)
                {
                    menu.AddItem(_factory.CreateMenuItemSeperator());
                }
            }
        }
Exemple #8
0
        public Task SetTextAsync(string text)
        {
            _native.Clear();

            if (text != null)
            {
                using (var buffer = new Utf8Buffer(text))
                {
                    _native.SetText(buffer.DangerousGetHandle());
                }
            }

            return(Task.CompletedTask);
        }
Exemple #9
0
        internal void Initialise(AvaloniaNativeMenuExporter exporter, NativeMenu managedMenu, string title)
        {
            _exporter   = exporter;
            ManagedMenu = managedMenu;

            ((INotifyCollectionChanged)ManagedMenu.Items).CollectionChanged += OnMenuItemsChanged;

            if (!string.IsNullOrWhiteSpace(title))
            {
                using (var buffer = new Utf8Buffer(title))
                {
                    Title = buffer.DangerousGetHandle();
                }
            }
        }
 public unsafe Task SetDataObjectAsync(IDataObject data)
 {
     _native.Clear();
     foreach (var fmt in data.GetDataFormats())
     {
         var o = data.Get(fmt);
         if (o is string s)
         {
             using (var b = new Utf8Buffer(s))
                 _native.SetText(fmt, b.DangerousGetHandle());
         }
         else if (o is byte[] bytes)
             fixed(byte *pbytes = bytes)
             _native.SetBytes(fmt, new IntPtr(pbytes), bytes.Length);
     }
     return(Task.CompletedTask);
 }
Exemple #11
0
            public GLShader(GlInterface gl, int shaderType, string source)
            {
                if (source == null)
                {
                    throw new ArgumentNullException(nameof(source));
                }

                this.gl = gl;

                ShaderId = gl.CreateShader(shaderType);
                using (var b = new Utf8Buffer(source))
                {
                    void *[] pstr = new void *[2];
                    long[]   len  = new long[2];
                    pstr[0] = (void *)b.DangerousGetHandle();
                    len[0]  = b.ByteLen;

                    fixed(void **ppstr = pstr)
                    fixed(long *plen = len)
                    gl.ShaderSource(ShaderId, 1, (IntPtr)ppstr, (IntPtr)plen);
                }
                gl.CompileShader(ShaderId);
                int compile_succeeded;

                gl.GetShaderiv(ShaderId, GL_COMPILE_STATUS, &compile_succeeded);

                if (compile_succeeded == 0)
                {
                    byte[] buf = new byte[MaxErrorLength];
                    string log;
                    fixed(byte *pbuf = buf)
                    {
                        gl.GetShaderInfoLog(ShaderId, MaxErrorLength, out int log_length, pbuf);
                        log = Encoding.UTF8.GetString(pbuf, log_length);
                    }

                    throw new InvalidOperationException($"Failed to compile shader : {log}");
                }
            }
 public int GetUniformLocationString(int program, string name)
 {
     using (var b = new Utf8Buffer(name))
         return(GetUniformLocation(program, b.DangerousGetHandle()));
 }
 public void BindAttribLocationString(int program, int index, string name)
 {
     using (var b = new Utf8Buffer(name))
         BindAttribLocation(program, index, b.DangerousGetHandle());
 }
Exemple #14
0
 public int GetUniformLocation(int program, string name)
 {
     using (Utf8Buffer utf8Buffer = new Utf8Buffer(name))
         return(this.GetUniformLocation_(program, utf8Buffer.DangerousGetHandle()));
 }
Exemple #15
0
 public int GetAttribLocation(int program, string name)
 {
     using Utf8Buffer utf8Buffer = new Utf8Buffer(name);
     return(GetAttribLocation_(program, utf8Buffer.DangerousGetHandle()));
 }
Exemple #16
0
 public int GetUniformBlockIndex(int program, string uniformBlockName)
 {
     using Utf8Buffer utf8Buffer = new Utf8Buffer(uniformBlockName);
     return(GetUniformBlockIndex_(program, utf8Buffer.DangerousGetHandle()));
 }