Class: Fox::FXGLGroup
- Inherits:
-
FXGLObject
- Object
- FXObject
- FXGLObject
- Fox::FXGLGroup
- Includes:
- Enumerable, OpenGL
- Defined in:
- lib/fox16/glgroup.rb
Overview
A group of OpenGL objects
Constant Summary collapse
- FLT_MAX =
1.0e+20
- FLT_MIN =
-1.0e+20
Instance Method Summary collapse
-
#[](pos) ⇒ Object
Return child at position pos.
-
#[]=(pos, obj) ⇒ Object
Set child at position pos to obj.
-
#append(obj) ⇒ Object
(also: #<<)
Append child object.
-
#bounds ⇒ Object
Return bounding box for this group (an FXRangef instance).
-
#canDrag ⇒ Object
Return
true
if group can be dragged. -
#clear ⇒ Object
Remove all children from this group.
-
#drag(viewer, fx, fy, tx, ty) ⇒ Object
Drag group object around in viewer (an FXGLViewer instance), from (fx, fy) to (tx, ty).
-
#draw(viewer) ⇒ Object
Draw this group into viewer (an FXGLViewer instance).
-
#each_child ⇒ Object
(also: #each)
Iterate over child objects.
-
#hit(viewer) ⇒ Object
Perform hit test in viewer (an FXGLViewer instance).
-
#identify(path) ⇒ Object
Identify object by means of path.
-
#initialize ⇒ FXGLGroup
constructor
Returns an initialized FXGLGroup instance.
-
#insert(pos, obj) ⇒ Object
Insert child object (obj) at position pos.
-
#prepend(obj) ⇒ Object
Prepend child object (obj).
-
#remove(obj) ⇒ Object
(also: #erase)
If obj is a reference to an FXGLObject in this group, remove the child object from the list.
-
#replace(pos, obj) ⇒ Object
Replace child object at position pos with obj.
-
#size ⇒ Object
Return number of objects in this group.
Methods inherited from FXGLObject
Methods inherited from FXObject
#bind, #handle, #load, #save, subclasses
Constructor Details
#initialize ⇒ FXGLGroup
Returns an initialized FXGLGroup instance
21 22 23 24 |
# File 'lib/fox16/glgroup.rb', line 21 def initialize super @list = [] end |
Instance Method Details
#[](pos) ⇒ Object
Return child at position pos.
36 37 38 |
# File 'lib/fox16/glgroup.rb', line 36 def [](pos) @list[pos] end |
#[]=(pos, obj) ⇒ Object
Set child at position pos to obj.
43 44 45 |
# File 'lib/fox16/glgroup.rb', line 43 def []=(pos, obj) @list[pos] = obj end |
#append(obj) ⇒ Object Also known as: <<
Append child object
131 132 133 |
# File 'lib/fox16/glgroup.rb', line 131 def append(obj) @list << obj end |
#bounds ⇒ Object
Return bounding box for this group (an FXRangef instance)
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/fox16/glgroup.rb', line 60 def bounds box = nil if @list.empty? box = FXRangef.new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) else box = FXRangef.new(FLT_MAX, -FLT_MAX, FLT_MAX, -FLT_MAX, FLT_MAX, -FLT_MAX) @list.each { |obj| box.include!(obj.bounds) } end box end |
#canDrag ⇒ Object
Return true
if group can be dragged.
102 103 104 |
# File 'lib/fox16/glgroup.rb', line 102 def canDrag true end |
#clear ⇒ Object
Remove all children from this group.
162 163 164 |
# File 'lib/fox16/glgroup.rb', line 162 def clear @list.clear end |
#drag(viewer, fx, fy, tx, ty) ⇒ Object
Drag group object around in viewer (an FXGLViewer instance), from (fx, fy) to (tx, ty).
110 111 112 |
# File 'lib/fox16/glgroup.rb', line 110 def drag(viewer, fx, fy, tx, ty) @list.each { |obj| obj.drag(viewer, fx, fy, tx, ty) } end |
#draw(viewer) ⇒ Object
Draw this group into viewer (an FXGLViewer instance).
74 75 76 |
# File 'lib/fox16/glgroup.rb', line 74 def draw(viewer) @list.each { |obj| obj.draw(viewer) } end |
#each_child ⇒ Object Also known as: each
Iterate over child objects
50 51 52 53 |
# File 'lib/fox16/glgroup.rb', line 50 def each_child # :yields: childObject @list.each { |child| yield child } self end |
#hit(viewer) ⇒ Object
Perform hit test in viewer (an FXGLViewer instance).
81 82 83 84 85 86 87 88 89 |
# File 'lib/fox16/glgroup.rb', line 81 def hit(viewer) # GL.PushName(0xffffffff) glPushName(1000000) @list.each_with_index do |obj, i| glLoadName(i) obj.hit(viewer) end glPopName end |
#identify(path) ⇒ Object
Identify object by means of path.
94 95 96 97 |
# File 'lib/fox16/glgroup.rb', line 94 def identify(path) objIndex = path.shift @list[objIndex].identify(path) end |
#insert(pos, obj) ⇒ Object
Insert child object (obj) at position pos.
117 118 119 |
# File 'lib/fox16/glgroup.rb', line 117 def insert(pos, obj) raise NotImplementedError end |
#prepend(obj) ⇒ Object
Prepend child object (obj).
124 125 126 |
# File 'lib/fox16/glgroup.rb', line 124 def prepend(obj) @list.unshift(obj) end |
#remove(obj) ⇒ Object Also known as: erase
If obj is a reference to an FXGLObject in this group, remove the child object from the list. If obj is an integer, remove the child object at that position from the list.
149 150 151 152 153 154 155 |
# File 'lib/fox16/glgroup.rb', line 149 def remove(obj) if obj.is_a? FXGLObject @list.delete(obj) else @list.delete_at(obj) end end |
#replace(pos, obj) ⇒ Object
Replace child object at position pos with obj.
140 141 142 |
# File 'lib/fox16/glgroup.rb', line 140 def replace(pos, obj) @list[pos] = obj end |
#size ⇒ Object
Return number of objects in this group.
29 30 31 |
# File 'lib/fox16/glgroup.rb', line 29 def size @list.size end |