private void UpdateTitle(string title) { using (var buffer = new Utf8Buffer(string.IsNullOrWhiteSpace(title) ? "" : title)) { Title = buffer.DangerousGetHandle(); } }
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); } }
public void SetupApplicationName() { if (!string.IsNullOrWhiteSpace(Application.Current.Name)) { using (var buffer = new Utf8Buffer(Application.Current.Name)) { _factory.MacOptions.SetApplicationTitle(buffer.DangerousGetHandle()); } } }
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()); } } }
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()); } } }
public Task SetTextAsync(string text) { _native.Clear(); if (text != null) { using (var buffer = new Utf8Buffer(text)) { _native.SetText(buffer.DangerousGetHandle()); } } return(Task.CompletedTask); }
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); }
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()); }
public int GetUniformLocation(int program, string name) { using (Utf8Buffer utf8Buffer = new Utf8Buffer(name)) return(this.GetUniformLocation_(program, utf8Buffer.DangerousGetHandle())); }
public int GetAttribLocation(int program, string name) { using Utf8Buffer utf8Buffer = new Utf8Buffer(name); return(GetAttribLocation_(program, utf8Buffer.DangerousGetHandle())); }
public int GetUniformBlockIndex(int program, string uniformBlockName) { using Utf8Buffer utf8Buffer = new Utf8Buffer(uniformBlockName); return(GetUniformBlockIndex_(program, utf8Buffer.DangerousGetHandle())); }