libui 0.0.12 → 0.0.15.pre

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f74d579c937d71a61c613abe93ca07ae1bafa8c78933d7cd4f979fc92b327883
4
- data.tar.gz: f091c583e9fd5c53673232b4babc90f87c626a8185c4fcfb576ce9d89d36affa
3
+ metadata.gz: 5e282cdaee29c0b7cd5b7bd11dc0bcb8c546ef927127c7564b79d890ec35e35f
4
+ data.tar.gz: 321d554f02a4f618590d2fc3652463e928136d1008b8836f15814a1f45c95072
5
5
  SHA512:
6
- metadata.gz: 8897e6b92a054070600be68a2f646e7b79468ace0ed6b6c0de4713a2b3cf8e7a72ef35e6934d72f1d31112778a6f948c49ca74130d805e189a72c448144fd35f
7
- data.tar.gz: ad4f816e611238801cfefdbff60891f86703c92554fbca79691e4bcff1fd9a4dff45ebeabd78acd57aedaf56ff3f120b9cd16ca95788a469bb0cb58060194dcc
6
+ metadata.gz: 05af08c9952f4107fd21a3db10aca8c6c37e1396076b8eebefe11efbe1b7d3b94e985eae313867b1a92b668cd916811711b60da4e83aaeea646f8809bcf0457b
7
+ data.tar.gz: 0e3e330daefd9483f0e885dbd1aeea1dbf9a4fa9843f83e30b529cdcb7fad99887916a3a9bb44d95e39a75537eb5297f7e55e75e0d2df1cc7542373eeeeabef6
data/README.md CHANGED
@@ -2,8 +2,9 @@
2
2
 
3
3
  ![build](https://github.com/kojix2/libui/workflows/build/badge.svg)
4
4
  [![Gem Version](https://badge.fury.io/rb/libui.svg)](https://badge.fury.io/rb/libui)
5
+ <a href="https://github.com/AndyObtiva/glimmer-dsl-libui"><img alt="glimmer-dsl-libui" src="https://github.com/AndyObtiva/glimmer/blob/master/images/glimmer-logo-hi-res.svg" width="50" height="50" align="right"></a>
5
6
 
6
- :radio_button: [libui](https://github.com/andlabs/libui) - a portable GUI library - for Ruby
7
+ :radio_button: [libui](https://github.com/libui-ng/libui-ng) - a portable GUI library - for Ruby
7
8
 
8
9
  ## Installation
9
10
 
@@ -20,7 +21,10 @@ gem install libui
20
21
  |---------|-----|-------|
21
22
  |<img src="https://user-images.githubusercontent.com/5798442/103118046-900ea780-46b0-11eb-81fc-32626762e4df.png">|<img src="https://user-images.githubusercontent.com/5798442/103118059-99980f80-46b0-11eb-9d12-324ec4d297c9.png">|<img src="https://user-images.githubusercontent.com/5798442/103118068-a0bf1d80-46b0-11eb-8c5c-3bdcc3dcfb26.png">|
22
23
 
23
- Note: If you are using the 32-bit (x86) version of Ruby, you need to download the 32-bit (x86) native dll. See [Development](#development).
24
+ Note:
25
+ * If you are using the 32-bit (x86) version of Ruby, you need to download the 32-bit (x86) native dll. See [Development](#development).
26
+ * ARM64/AARCH64 Support is limited. See ([#47](https://github.com/kojix2/LibUI/issues/47))
27
+ * On Windows, libui may not work due to missing DLLs. In that case, you need to install [Visual C++ Redistributable](https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist). See ([#48](https://github.com/kojix2/LibUI/issues/48))
24
28
 
25
29
  ## Usage
26
30
 
@@ -69,12 +73,13 @@ You can use [the documentation for libui's Go bindings](https://pkg.go.dev/githu
69
73
 
70
74
  ### Not object oriented?
71
75
 
72
- * At the moment, it is not object-oriented.
73
- * Instead of providing a half-baked object-oriented approach, leave it as is.
76
+ LibUI is not object-oriented, but provides high portability with minimal implementation.
77
+ If you want to write in an object-oriented way, please use the following DSLs built on top of LibUI.
74
78
 
75
79
  ### DSLs for LibUI
76
- * [Glimmer DSL for LibUI](https://github.com/AndyObtiva/glimmer-dsl-libui)
77
- * [libui_paradise](https://rubygems.org/gems/libui_paradise)
80
+
81
+ * [Glimmer DSL for LibUI](https://github.com/AndyObtiva/glimmer-dsl-libui)
82
+ * [libui_paradise](https://rubygems.org/gems/libui_paradise)
78
83
 
79
84
  ### How to use fiddle pointers?
80
85
 
@@ -100,6 +105,7 @@ font_button = UI.new_font_button
100
105
  # Allocate memory
101
106
  font_descriptor = UI::FFI::FontDescriptor.malloc
102
107
  font_descriptor.to_ptr.free = Fiddle::RUBY_FREE
108
+ # font_descriptor = UI::FFI::FontDescriptor.malloc(Fiddle::RUBY_FREE) # fiddle 1.0.1 or higher
103
109
 
104
110
  UI.font_button_on_changed(font_button) do
105
111
  UI.font_button_font(font_button, font_descriptor)
@@ -185,6 +191,12 @@ Would you like to add your commits to libui?
185
191
  * Small corrections, such as typofixes, are appreciated.
186
192
  * Did you find any bugs? Write it in the [issues](https://github.com/kojix2/LibUI/issue) section!
187
193
 
194
+ ```
195
+ Do you need commit rights to my repository?
196
+ Do you want to get admin rights and take over the project?
197
+ If so, please feel free to contact me @kojix2.
198
+ ```
199
+
188
200
  ## Acknowledgement
189
201
 
190
202
  This project is inspired by libui-ruby.
data/lib/libui/ffi.rb CHANGED
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require 'fiddle/import'
4
2
  require_relative 'fiddle_patch'
5
3
 
@@ -36,7 +34,7 @@ module LibUI
36
34
 
37
35
  # https://github.com/andlabs/libui/blob/master/ui.h
38
36
  # keep same order
39
-
37
+
40
38
  try_extern 'const char *uiInit(uiInitOptions *options)'
41
39
  try_extern 'void uiUninit(void)'
42
40
  try_extern 'void uiFreeInitError(const char *err)'
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module LibUI
4
2
  module LibUIBase
5
3
  FFI.func_map.each_key do |original_method_name|
@@ -12,24 +10,33 @@ module LibUI
12
10
 
13
11
  # The proc object is converted to a Closure::BlockCaller object.
14
12
  args.map!.with_index do |arg, idx|
15
- if arg.is_a?(Proc)
16
- # The types of the function arguments are recorded beforehand.
17
- # See the monkey patch in ffi.rb.
18
- callback = Fiddle::Closure::BlockCaller.new(
19
- *func.callback_argument_types[idx][1..2], &arg
20
- )
21
- # Protect from GC
22
- # See https://github.com/kojix2/LibUI/issues/8
23
- receiver = args[0]
24
- if receiver.instance_variable_defined?(:@callbacks)
25
- receiver.instance_variable_get(:@callbacks) << callback
26
- else
27
- receiver.instance_variable_set(:@callbacks, [callback])
28
- end
29
- callback
13
+ next arg unless arg.is_a?(Proc)
14
+
15
+ # now arg must be Proc
16
+
17
+ # The types of the function arguments are stored in advance.
18
+ # See the monkey patch in ffi.rb.
19
+ _f, ret_type, arg_types = func.callback_argument_types[idx]
20
+ # TODO: raise some nice error if _f is nil.
21
+
22
+ callback = Fiddle::Closure::BlockCaller.new(
23
+ ret_type, arg_types, &arg
24
+ )
25
+ # Protect from GC
26
+ # by giving the owner object a reference to the callback.
27
+ # See https://github.com/kojix2/LibUI/issues/8
28
+ owner = if idx == 0 or # UI.queue_main{}
29
+ owner.frozen? # UI.timer(100) {}
30
+ LibUIBase # or UI is better?
31
+ else
32
+ args[0] # receiver
33
+ end
34
+ if owner.instance_variable_defined?(:@callbacks)
35
+ owner.instance_variable_get(:@callbacks) << callback
30
36
  else
31
- arg
37
+ owner.instance_variable_set(:@callbacks, [callback])
32
38
  end
39
+ callback
33
40
  end
34
41
 
35
42
  # Make it possible to omit the last nil. This may be an over-optimization.
data/lib/libui/version.rb CHANGED
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module LibUI
4
- VERSION = '0.0.12'
2
+ VERSION = '0.0.15.pre'
5
3
  end
data/lib/libui.rb CHANGED
@@ -1,7 +1,6 @@
1
- # frozen_string_literal: true
2
-
3
1
  require_relative 'libui/version'
4
2
  require_relative 'libui/utils'
3
+ require 'rbconfig'
5
4
 
6
5
  module LibUI
7
6
  class Error < StandardError; end
@@ -35,6 +34,21 @@ module LibUI
35
34
  warn 'error'
36
35
  warn UI.free_init_error(init)
37
36
  end
37
+
38
+ def open_type_features_add(otf, a, b, c, d, value)
39
+ a, b, c, d = [a, b, c, d].map { |s| s.is_a?(String) ? s.ord : s }
40
+ super(otf, a, b, c, d, value)
41
+ end
42
+
43
+ def open_type_features_remove(otf, a, b, c, d)
44
+ a, b, c, d = [a, b, c, d].map { |s| s.is_a?(String) ? s.ord : s }
45
+ super(otf, a, b, c, d)
46
+ end
47
+
48
+ def open_type_features_get(otf, a, b, c, d, value)
49
+ a, b, c, d = [a, b, c, d].map { |s| s.is_a?(String) ? s.ord : s }
50
+ super(otf, a, b, c, d, value)
51
+ end
38
52
  end
39
53
 
40
54
  # UI_ENUM
data/vendor/libui.dylib CHANGED
Binary file
metadata CHANGED
@@ -1,85 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.15.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - kojix2
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-16 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: minitest
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rubocop
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rubyzip
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
11
+ date: 2022-03-06 00:00:00.000000000 Z
12
+ dependencies: []
83
13
  description:
84
14
  email:
85
15
  - 2xijok@gmail.com
@@ -115,11 +45,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
115
45
  version: '2.5'
116
46
  required_rubygems_version: !ruby/object:Gem::Requirement
117
47
  requirements:
118
- - - ">="
48
+ - - ">"
119
49
  - !ruby/object:Gem::Version
120
- version: '0'
50
+ version: 1.3.1
121
51
  requirements: []
122
- rubygems_version: 3.2.22
52
+ rubygems_version: 3.3.7
123
53
  signing_key:
124
54
  specification_version: 4
125
55
  summary: Ruby bindings to libui