fxruby 1.6.40-x86-mingw32 → 1.6.41-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/History.md +1315 -23
- data/README.rdoc +1 -1
- data/Rakefile +90 -68
- data/appveyor.yml +3 -1
- data/examples/inputs.rb +9 -4
- data/examples/pig.rb +2 -2
- data/examples/unicode.rb +6 -27
- data/ext/fox16_c/FXRbApp.cpp +0 -14
- data/ext/fox16_c/FXRuby.cpp +21 -31
- data/ext/fox16_c/extconf.rb +44 -25
- data/ext/fox16_c/impl.cpp +1 -1
- data/ext/fox16_c/include/FXRbCommon.h +0 -2
- data/ext/fox16_c/include/FXRbText.h +82 -2
- data/ext/fox16_c/include/FXRbTextVirtuals.h +22 -0
- data/ext/fox16_c/include/FXRuby.h +20 -2
- data/ext/fox16_c/include/gvl_wrappers.h +29 -11
- data/ext/fox16_c/make_impl.rb +1 -1
- data/fxruby.gemspec +1 -1
- data/lib/fox16/input.rb +9 -7
- data/lib/fox16/version.rb +1 -1
- data/rdoc-sources/FXGLVisual.rb +1 -1
- data/rdoc-sources/FXIconList.rb +2 -0
- data/rdoc-sources/FXList.rb +2 -0
- data/rdoc-sources/FXListBox.rb +1 -1
- data/rdoc-sources/FXText.rb +4 -2
- data/swig-interfaces/FXText.i +10 -8
- data/swig-interfaces/macros.i +9 -0
- data/test/TC_FXText.rb +19 -0
- data/test/TC_FXVec4f.rb +26 -12
- metadata +6 -6
data/lib/fox16/version.rb
CHANGED
data/rdoc-sources/FXGLVisual.rb
CHANGED
@@ -83,7 +83,7 @@ module Fox
|
|
83
83
|
|
84
84
|
# Test if OpenGL is possible.
|
85
85
|
#
|
86
|
-
# Same as {FXGLVisual.supported
|
86
|
+
# Same as {FXGLVisual.supported}, but returns the first element (true/false) only.
|
87
87
|
#
|
88
88
|
def FXGLVisual.supported?(app); end
|
89
89
|
|
data/rdoc-sources/FXIconList.rb
CHANGED
@@ -267,6 +267,8 @@ module Fox
|
|
267
267
|
# after the item is appended.
|
268
268
|
def appendItem(text, bigIcon=nil, miniIcon=nil, data=nil, notify=false); end
|
269
269
|
|
270
|
+
alias << appendItem
|
271
|
+
|
270
272
|
# Prepend a new (possibly subclassed) _item_ to the beginning of the list.
|
271
273
|
# If _notify_ is +true+, a +SEL_INSERTED+ message is sent to the list's message target
|
272
274
|
# after the item is prepended.
|
data/rdoc-sources/FXList.rb
CHANGED
@@ -217,6 +217,8 @@ module Fox
|
|
217
217
|
# Returns the integer index of the newly appended item.
|
218
218
|
def appendItem(text, icon=nil, data=nil, notify=false) ; end
|
219
219
|
|
220
|
+
alias << appendItem
|
221
|
+
|
220
222
|
# Prepend a (possibly subclassed) _item_ to the list, e.g.
|
221
223
|
#
|
222
224
|
# list.prependItem(FXListItem.new("clyde"))
|
data/rdoc-sources/FXListBox.rb
CHANGED
data/rdoc-sources/FXText.rb
CHANGED
@@ -436,8 +436,8 @@ module Fox
|
|
436
436
|
#
|
437
437
|
# Search for _string_ in text buffer, and return the extent of
|
438
438
|
# the string as a two-element array of arrays.
|
439
|
-
# The first array contains the beginning index (or indices)
|
440
|
-
# and the second array contains the ending index (or indices).
|
439
|
+
# The first array contains the beginning index (or indices if +SEARCH_REGEX+)
|
440
|
+
# and the second array contains the ending index (or indices if +SEARCH_REGEX+) of the first match.
|
441
441
|
# The search starts from the given
|
442
442
|
# _start_ position, scans forward (+SEARCH_FORWARD+) or backward
|
443
443
|
# (+SEARCH_BACKWARD+), and wraps around if +SEARCH_WRAP+ has been
|
@@ -445,6 +445,8 @@ module Fox
|
|
445
445
|
# case insensitive search (+SEARCH_IGNORECASE+), or regular expression
|
446
446
|
# search (+SEARCH_REGEX+).
|
447
447
|
#
|
448
|
+
# For regular expression searches, the found regex match begin and end is returned at index 0 and captures are returned as entries starting at index 1 in both beginning and ending arrays.
|
449
|
+
#
|
448
450
|
def findText(string, start=0, flags=SEARCH_FORWARD|SEARCH_WRAP|SEARCH_EXACT); end
|
449
451
|
|
450
452
|
# Return +true+ if position _pos_ is selected
|
data/swig-interfaces/FXText.i
CHANGED
@@ -519,6 +519,8 @@ public:
|
|
519
519
|
|
520
520
|
%extend {
|
521
521
|
/**
|
522
|
+
* TODO: Change API to return [beg, end] instead of [[beg], [end]] for non regex.
|
523
|
+
*
|
522
524
|
* Search for string in text buffer, returning the extent of
|
523
525
|
* the string in beg and end. The search starts from the given
|
524
526
|
* starting position, scans forward (SEARCH_FORWARD) or backward
|
@@ -536,23 +538,23 @@ public:
|
|
536
538
|
FXint* beg;
|
537
539
|
FXint* end;
|
538
540
|
VALUE ary=Qnil;
|
539
|
-
|
541
|
+
FXint ngroups = flags&SEARCH_REGEX ? string.contains('(')+1 : 1; // FIXME: is this right?
|
540
542
|
if(!FXMALLOC(&beg,FXint,ngroups)){
|
541
543
|
return Qnil;
|
542
|
-
|
544
|
+
}
|
543
545
|
if(!FXMALLOC(&end,FXint,ngroups)){
|
544
546
|
FXFREE(&beg);
|
545
|
-
|
546
|
-
|
547
|
+
return Qnil;
|
548
|
+
}
|
547
549
|
if(self->findText(string,beg,end,start,flags,ngroups)){
|
548
550
|
ary=rb_ary_new();
|
549
|
-
|
550
|
-
|
551
|
-
|
551
|
+
rb_ary_push(ary,FXRbMakeArray(beg,ngroups));
|
552
|
+
rb_ary_push(ary,FXRbMakeArray(end,ngroups));
|
553
|
+
}
|
552
554
|
FXFREE(&beg);
|
553
555
|
FXFREE(&end);
|
554
556
|
return ary;
|
555
|
-
|
557
|
+
}
|
556
558
|
}
|
557
559
|
|
558
560
|
/// Return TRUE if position pos is selected
|
data/swig-interfaces/macros.i
CHANGED
@@ -1165,6 +1165,15 @@
|
|
1165
1165
|
|
1166
1166
|
%define DECLARE_FXTEXT_VIRTUALS(klass)
|
1167
1167
|
%extend klass {
|
1168
|
+
virtual void eraseCursorOverhang();
|
1169
|
+
virtual void drawCursor(FXuint state);
|
1170
|
+
virtual FXuint style(FXint row,FXint beg,FXint end,FXint pos);
|
1171
|
+
virtual void drawBufferText(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXint pos,FXint n,FXuint style);
|
1172
|
+
virtual void fillBufferRect(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXuint style);
|
1173
|
+
virtual void drawTextRow(FXDCWindow& dc,FXint line,FXint left,FXint right);
|
1174
|
+
virtual void drawContents(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
|
1175
|
+
virtual void drawNumbers(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
|
1176
|
+
|
1168
1177
|
virtual void setCursorPos(FXint pos,FXbool notify=FALSE);
|
1169
1178
|
virtual FXbool extendSelection(FXint pos,FXTextSelectionMode mode=SELECT_CHARS,FXbool notify=FALSE);
|
1170
1179
|
virtual FXbool killSelection(FXbool notify=FALSE);
|
data/test/TC_FXText.rb
CHANGED
@@ -87,6 +87,13 @@ public
|
|
87
87
|
assert_equal([10], endIndex)
|
88
88
|
end
|
89
89
|
|
90
|
+
def test_find_text_with_startpos_wrap_nocase
|
91
|
+
@text.text = "I came, i saw, I conquered"
|
92
|
+
startIndex, endIndex = @text.findText("i ", 16, SEARCH_FORWARD|SEARCH_IGNORECASE|SEARCH_WRAP)
|
93
|
+
assert_equal([0], startIndex)
|
94
|
+
assert_equal([2], endIndex)
|
95
|
+
end
|
96
|
+
|
90
97
|
def test_find_text_with_groups
|
91
98
|
@text.text = "I came, I saw, I conquered"
|
92
99
|
startIndex, endIndex = @text.findText("I ([a-z]+)(, )?", 0, SEARCH_REGEX)
|
@@ -94,6 +101,18 @@ public
|
|
94
101
|
assert_equal([8, 6, 8], endIndex)
|
95
102
|
end
|
96
103
|
|
104
|
+
def test_find_text_with_loop
|
105
|
+
@text.text = "() ()()"
|
106
|
+
e = Enumerator.new do |y|
|
107
|
+
pos = 0
|
108
|
+
while a=@text.findText("()", pos, SEARCH_FORWARD|SEARCH_EXACT)
|
109
|
+
y << a
|
110
|
+
pos = a[1][0]
|
111
|
+
end
|
112
|
+
end
|
113
|
+
assert_equal [[[0], [2]], [[4], [6]], [[6], [8]]], e.to_a
|
114
|
+
end
|
115
|
+
|
97
116
|
if ''.respond_to?(:encoding)
|
98
117
|
def test_encoding
|
99
118
|
@text.text = "世界線航跡蔵"
|
data/test/TC_FXVec4f.rb
CHANGED
@@ -5,6 +5,20 @@ require 'fox16'
|
|
5
5
|
class TC_FXVec4f < Test::Unit::TestCase
|
6
6
|
include Fox
|
7
7
|
|
8
|
+
def assert_in_delta(v1, v2, delta)
|
9
|
+
case v1
|
10
|
+
when FXVec3f
|
11
|
+
3.times do |i|
|
12
|
+
super(v1[i], v2[i], delta)
|
13
|
+
end
|
14
|
+
when FXVec4f
|
15
|
+
4.times do |i|
|
16
|
+
super(v1[i], v2[i], delta)
|
17
|
+
end
|
18
|
+
else
|
19
|
+
super(v1, v2, delta)
|
20
|
+
end
|
21
|
+
end
|
8
22
|
|
9
23
|
def test_new
|
10
24
|
FXVec4f.new
|
@@ -65,37 +79,37 @@ class TC_FXVec4f < Test::Unit::TestCase
|
|
65
79
|
def test_neg
|
66
80
|
vec = FXVec4f.new(1.0, 2.0, 3.0, 4.0)
|
67
81
|
vec = -vec
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
82
|
+
assert_in_delta(vec[0], -1.0, 0.001)
|
83
|
+
assert_in_delta(vec[1], -2.0, 0.001)
|
84
|
+
assert_in_delta(vec[2], -3.0, 0.001)
|
85
|
+
assert_in_delta(vec[3], -4.0, 0.001)
|
72
86
|
end
|
73
87
|
|
74
88
|
def test_add
|
75
89
|
v1 = FXVec4f.new(1.0, 2.0, 3.0, 4.0)
|
76
90
|
v2 = FXVec4f.new(2.0, 4.0, 6.0, 8.0)
|
77
91
|
v3 = FXVec4f.new(3.0, 6.0, 9.0, 12.0)
|
78
|
-
|
92
|
+
assert_in_delta(v3, v1 + v2, 0.001)
|
79
93
|
end
|
80
94
|
|
81
95
|
def test_sub
|
82
96
|
v1 = FXVec4f.new(3.0, 6.0, 9.0, 12.0)
|
83
97
|
v2 = FXVec4f.new(2.0, 4.0, 6.0, 8.0)
|
84
98
|
v3 = FXVec4f.new(1.0, 2.0, 3.0, 4.0)
|
85
|
-
|
99
|
+
assert_in_delta(v3, v1 - v2, 0.001)
|
86
100
|
end
|
87
101
|
|
88
102
|
def test_mul
|
89
103
|
v1 = FXVec4f.new(3.0, 6.0, 9.0, 12.0)
|
90
104
|
v2 = FXVec4f.new(6.0, 12.0, 18.0, 24.0)
|
91
|
-
|
105
|
+
assert_in_delta(v2, v1 * 2, 0.001)
|
92
106
|
end
|
93
107
|
|
94
108
|
def test_mul2 # same as dot product
|
95
109
|
v1 = FXVec4f.new(3.0, 6.0, 9.0, 12.0)
|
96
110
|
v2 = FXVec4f.new(2.0, 4.0, 6.0, 8.0)
|
97
|
-
|
98
|
-
|
111
|
+
assert_in_delta(180.0, v1*v2, 0.001)
|
112
|
+
assert_in_delta(180.0, v2*v1, 0.001)
|
99
113
|
end
|
100
114
|
|
101
115
|
def test_div
|
@@ -110,8 +124,8 @@ class TC_FXVec4f < Test::Unit::TestCase
|
|
110
124
|
def test_dot
|
111
125
|
v1 = FXVec4f.new(3.0, 6.0, 9.0, 12.0)
|
112
126
|
v2 = FXVec4f.new(2.0, 4.0, 6.0, 8.0)
|
113
|
-
|
114
|
-
|
127
|
+
assert_in_delta(180.0, v1.dot(v2), 0.001)
|
128
|
+
assert_in_delta(180.0, v2.dot(v1), 0.001)
|
115
129
|
end
|
116
130
|
|
117
131
|
def test_length
|
@@ -121,7 +135,7 @@ class TC_FXVec4f < Test::Unit::TestCase
|
|
121
135
|
|
122
136
|
def test_normalize
|
123
137
|
vec = FXVec4f.new(1.0, 1.0, 1.0, 1.0)
|
124
|
-
|
138
|
+
assert_in_delta(FXVec4f.new(0.5, 0.5, 0.5, 0.5), vec.normalize, 0.001)
|
125
139
|
end
|
126
140
|
|
127
141
|
def test_lo
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fxruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.41
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- Lyle Johnson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-01-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mini_portile2
|
@@ -431,6 +431,7 @@ files:
|
|
431
431
|
- lib/2.4/fox16_c.so
|
432
432
|
- lib/2.5/fox16_c.so
|
433
433
|
- lib/2.6/fox16_c.so
|
434
|
+
- lib/2.7/fox16_c.so
|
434
435
|
- lib/fox16.rb
|
435
436
|
- lib/fox16/accel_table.rb
|
436
437
|
- lib/fox16/aliases.rb
|
@@ -991,7 +992,7 @@ files:
|
|
991
992
|
- test/stress2.rb
|
992
993
|
- test/stress3.rb
|
993
994
|
- test/testcase.rb
|
994
|
-
homepage:
|
995
|
+
homepage: https://github.com/larskanis/fxruby
|
995
996
|
licenses:
|
996
997
|
- LGPL-2.1
|
997
998
|
metadata: {}
|
@@ -1006,15 +1007,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1006
1007
|
version: '2.2'
|
1007
1008
|
- - "<"
|
1008
1009
|
- !ruby/object:Gem::Version
|
1009
|
-
version: 2.
|
1010
|
+
version: 2.8.dev
|
1010
1011
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1011
1012
|
requirements:
|
1012
1013
|
- - ">="
|
1013
1014
|
- !ruby/object:Gem::Version
|
1014
1015
|
version: '0'
|
1015
1016
|
requirements: []
|
1016
|
-
|
1017
|
-
rubygems_version: 2.7.8
|
1017
|
+
rubygems_version: 3.1.2
|
1018
1018
|
signing_key:
|
1019
1019
|
specification_version: 4
|
1020
1020
|
summary: FXRuby is the Ruby binding to the FOX GUI toolkit.
|