wxruby 2.0.0-x86-linux → 2.0.1-x86-linux
Sign up to get free protection for your applications and to get access to all the features.
- data/art/wxruby-128x128.png +0 -0
- data/art/wxruby-256x256.png +0 -0
- data/art/wxruby-64x64.png +0 -0
- data/art/wxruby.png +0 -0
- data/lib/wx/accessors.rb +1 -3
- data/lib/wx/classes/checklistbox.rb +2 -1
- data/lib/wx/classes/evthandler.rb +1 -1
- data/lib/wx/classes/image.rb +5 -0
- data/lib/wx/classes/listctrl.rb +2 -2
- data/lib/wx/classes/sizer.rb +7 -1
- data/lib/wx/classes/splitterwindow.rb +10 -0
- data/lib/wx/classes/timer.rb +2 -0
- data/lib/wx/classes/toolbar.rb +7 -1
- data/lib/wx/helpers.rb +22 -13
- data/lib/wx/keyword_ctors.rb +1 -1
- data/lib/wx/keyword_defs.rb +14 -4
- data/lib/wx/version.rb +1 -1
- data/lib/wxruby2.so +0 -0
- data/samples/bigdemo/ShapedWindow.rbw +11 -14
- data/samples/bigdemo/bigdemo.rb +2 -2
- data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
- data/samples/bigdemo/wxStaticBitmap.rbw +8 -12
- data/samples/calendar/calendar.rb +92 -0
- data/samples/drawing/bitmap.rb +8 -3
- data/samples/drawing/maths_images.rb +4 -4
- data/samples/drawing/rmagic_bitmap_image.rb +110 -0
- data/samples/minimal/minimal.rb +1 -1
- data/samples/opengl/cube.rb +27 -14
- data/samples/opengl/cube_anim_lighting.rb +191 -0
- metadata +219 -238
- data/samples/bigdemo/icons/ruby.png +0 -0
- data/samples/drawing/wxruby-logo.png +0 -0
data/samples/drawing/bitmap.rb
CHANGED
@@ -22,8 +22,13 @@ class ImageFrame < Wx::Frame
|
|
22
22
|
def initialize
|
23
23
|
super(nil, :title => 'Simple image demo')
|
24
24
|
|
25
|
+
@offset = 10
|
26
|
+
size = 256+2*@offset
|
27
|
+
self.client_size = [size, size]
|
28
|
+
|
25
29
|
# Load a PNG bitmap from a file for drawing
|
26
|
-
img_file = File.join( File.dirname(__FILE__),
|
30
|
+
img_file = File.join( File.dirname(__FILE__)+"/../../art",
|
31
|
+
'wxruby-256x256.png')
|
27
32
|
@bitmap = Wx::Bitmap.new(img_file)
|
28
33
|
|
29
34
|
# Set up the drawing to be done when the frame needs re-painting
|
@@ -32,8 +37,8 @@ class ImageFrame < Wx::Frame
|
|
32
37
|
|
33
38
|
def on_paint
|
34
39
|
paint do | dc |
|
35
|
-
# Draw the bitmap at
|
36
|
-
dc.draw_bitmap(@bitmap,
|
40
|
+
# Draw the bitmap at the specified offset with no transparency
|
41
|
+
dc.draw_bitmap(@bitmap, @offset, @offset, false)
|
37
42
|
end
|
38
43
|
end
|
39
44
|
end
|
@@ -21,7 +21,7 @@ include Math
|
|
21
21
|
# The sample demonstrates some uses of the Wx::Image class, a
|
22
22
|
# platform-independent representation of an image which can be
|
23
23
|
# manipulated (for example, resizing) and written to files in various
|
24
|
-
# formats. It also shows how an image's data can be written directly, by
|
24
|
+
# formats. It also shows how an image's rgb data can be written directly, by
|
25
25
|
# using Array#pack.
|
26
26
|
|
27
27
|
# A canvas that draws and displays a mathematically generated image
|
@@ -36,7 +36,7 @@ class MathsDrawing < Window
|
|
36
36
|
super(parent)
|
37
37
|
# Create a dummy image
|
38
38
|
@default_image = Image.new(1, 1)
|
39
|
-
@default_image.
|
39
|
+
@default_image.rgb_data = [255, 255, 255].pack('CCC')
|
40
40
|
@img = @default_image
|
41
41
|
|
42
42
|
@red = lambda { | x, y | 1 }
|
@@ -88,7 +88,7 @@ class MathsDrawing < Window
|
|
88
88
|
end
|
89
89
|
|
90
90
|
start_time = Time.now
|
91
|
-
# The string holding raw
|
91
|
+
# The string holding raw rgb data
|
92
92
|
data = ''
|
93
93
|
x_factor = size_x.to_f
|
94
94
|
y_factor = size_y.to_f
|
@@ -105,7 +105,7 @@ class MathsDrawing < Window
|
|
105
105
|
end
|
106
106
|
end
|
107
107
|
img = Image.new(size_x, size_y)
|
108
|
-
img.
|
108
|
+
img.rgb_data = data
|
109
109
|
@render_time = Time.now - start_time
|
110
110
|
img
|
111
111
|
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
begin
|
5
|
+
require 'rubygems'
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
require 'wx'
|
9
|
+
require 'RMagick'
|
10
|
+
|
11
|
+
# RMagick sample (written by Chauk-Mean Proum)
|
12
|
+
|
13
|
+
# This sample demonstrates how to convert directly a RMagick image to
|
14
|
+
# a wxRuby image (without saving and loading the image file).
|
15
|
+
# See the magick_to_wx method.
|
16
|
+
|
17
|
+
class ImageFrame < Wx::Frame
|
18
|
+
def initialize
|
19
|
+
super(nil, :title => 'RMagick sample', :size => [600, 600])
|
20
|
+
|
21
|
+
# Create the magick image from an image file
|
22
|
+
img_file = File.join( File.dirname(__FILE__)+"/../../art",
|
23
|
+
'wxruby-256x256.png')
|
24
|
+
@magick_image = Magick::ImageList.new(img_file)
|
25
|
+
|
26
|
+
# Create some magick images with special effects
|
27
|
+
@magick_image1 = @magick_image.sketch
|
28
|
+
@magick_image2 = @magick_image.oil_paint(4)
|
29
|
+
@magick_image3 = @magick_image.shade
|
30
|
+
|
31
|
+
# Convert the magick images to wxRuby images
|
32
|
+
@image1 = magick_to_wx(@magick_image1)
|
33
|
+
@image2 = magick_to_wx(@magick_image2)
|
34
|
+
@image3 = magick_to_wx(@magick_image3)
|
35
|
+
|
36
|
+
# Create the corresponding bitmaps
|
37
|
+
compute_bitmaps
|
38
|
+
|
39
|
+
# Set up event handling
|
40
|
+
evt_size :on_size
|
41
|
+
evt_idle :on_idle
|
42
|
+
evt_paint :on_paint
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
# Convert the RMagick image to a WxRuby image
|
47
|
+
def magick_to_wx magick_img
|
48
|
+
wx_img = Wx::Image.new(magick_img.columns, magick_img.rows)
|
49
|
+
|
50
|
+
# Set the image data
|
51
|
+
wx_img.rgb_data = magick_img.to_blob { self.format = "RGB" }
|
52
|
+
|
53
|
+
# Set the alpha (transparency) if any
|
54
|
+
if magick_img.alpha?
|
55
|
+
wx_img.alpha_data = magick_img.to_blob { self.format = "A" }
|
56
|
+
end
|
57
|
+
|
58
|
+
wx_img
|
59
|
+
end
|
60
|
+
|
61
|
+
# Create a bitmap for the specified image and size
|
62
|
+
def compute_bitmap image, width, height
|
63
|
+
rescaled_image = Wx::Image.new(image).rescale(width, height)
|
64
|
+
rescaled_image.to_bitmap
|
65
|
+
end
|
66
|
+
|
67
|
+
# Create the bitmaps corresponding to the images and with half the size of the frame
|
68
|
+
def compute_bitmaps
|
69
|
+
width = client_size.x / 2
|
70
|
+
height = client_size.y / 2
|
71
|
+
@bitmap1 = compute_bitmap(@image1, width, height)
|
72
|
+
@bitmap2 = compute_bitmap(@image2, width, height)
|
73
|
+
@bitmap3 = compute_bitmap(@image3, width, height)
|
74
|
+
@done = true
|
75
|
+
end
|
76
|
+
|
77
|
+
# Note to recompute the bitmaps on a resize
|
78
|
+
def on_size(event)
|
79
|
+
@done = false
|
80
|
+
event.skip
|
81
|
+
end
|
82
|
+
|
83
|
+
# Recompute the bitmaps if needed, then do a refresh
|
84
|
+
def on_idle
|
85
|
+
if not @done
|
86
|
+
compute_bitmaps
|
87
|
+
refresh
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
# Paint the frame with the bitmaps
|
92
|
+
def on_paint
|
93
|
+
paint do | dc |
|
94
|
+
|
95
|
+
if @done
|
96
|
+
offset_x = client_size.x / 4
|
97
|
+
offset_y = client_size.y / 4
|
98
|
+
dc.draw_bitmap(@bitmap1, 0, 0, true)
|
99
|
+
dc.draw_bitmap(@bitmap2, offset_x, offset_y, true)
|
100
|
+
dc.draw_bitmap(@bitmap3, offset_x*2, offset_y*2, true)
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
Wx::App.run do
|
108
|
+
ImageFrame.new.show
|
109
|
+
end
|
110
|
+
|
data/samples/minimal/minimal.rb
CHANGED
@@ -20,7 +20,7 @@ class MinimalFrame < Wx::Frame
|
|
20
20
|
|
21
21
|
# Give the frame an icon. PNG is a good choice of format for
|
22
22
|
# cross-platform images. Note that OS X doesn't have "Frame" icons.
|
23
|
-
icon_file = File.join( File.dirname(__FILE__), "
|
23
|
+
icon_file = File.join( File.dirname(__FILE__)+"/../../art", "wxruby.png")
|
24
24
|
self.icon = Wx::Icon.new(icon_file)
|
25
25
|
|
26
26
|
menu_bar = Wx::MenuBar.new
|
data/samples/opengl/cube.rb
CHANGED
@@ -14,13 +14,27 @@ include Glu
|
|
14
14
|
|
15
15
|
class CubeFrame < Wx::Frame
|
16
16
|
def initialize(title)
|
17
|
-
super(nil, :title => title, :size => [
|
17
|
+
super(nil, :title => title, :size => [ 600, 400 ])
|
18
|
+
|
19
|
+
sizer = Wx::VBoxSizer.new
|
20
|
+
|
18
21
|
attrib = [Wx::GL_RGBA, Wx::GL_DOUBLEBUFFER, Wx::GL_DEPTH_SIZE, 24]
|
19
22
|
@canvas = Wx::GLCanvas.new(self, -1, [-1, -1], [-1, -1],
|
20
|
-
Wx::FULL_REPAINT_ON_RESIZE,
|
21
|
-
|
23
|
+
Wx::FULL_REPAINT_ON_RESIZE, "GLCanvas", attrib)
|
24
|
+
sizer.add_item @canvas, :proportion => 1, :flag => Wx::EXPAND
|
25
|
+
|
26
|
+
text = Wx::StaticText.new(self, :label => "Use Up/Down/Left/Right keys to rotate the cube")
|
27
|
+
sizer.add_item text
|
28
|
+
|
29
|
+
self.sizer = sizer
|
30
|
+
self.show
|
31
|
+
|
32
|
+
@canvas.set_focus
|
22
33
|
@canvas.evt_key_down {|evt| on_key_down(evt.get_key_code) }
|
23
|
-
|
34
|
+
|
35
|
+
@canvas.evt_paint { @canvas.paint { render } }
|
36
|
+
@rotate = [30.0, 0.0, -30.0]
|
37
|
+
|
24
38
|
end
|
25
39
|
|
26
40
|
def on_key_down(key)
|
@@ -39,9 +53,9 @@ class CubeFrame < Wx::Frame
|
|
39
53
|
|
40
54
|
def render
|
41
55
|
@canvas.set_current
|
42
|
-
sz = @canvas.
|
43
|
-
w = sz.
|
44
|
-
h = sz.
|
56
|
+
sz = @canvas.size
|
57
|
+
w = sz.width
|
58
|
+
h = sz.height
|
45
59
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
|
46
60
|
glEnable(GL_DEPTH_TEST)
|
47
61
|
glViewport(0, 0, w, h)
|
@@ -58,7 +72,7 @@ class CubeFrame < Wx::Frame
|
|
58
72
|
glRotate(@rotate[2], 0.0, 0.0, 1.0)
|
59
73
|
glBegin(GL_TRIANGLES)
|
60
74
|
#left
|
61
|
-
glColor3d(1.0, 1.0,
|
75
|
+
glColor3d(1.0, 1.0, 0.0) # yellow
|
62
76
|
glVertex3d(-1.0, 1.0, 1.0)
|
63
77
|
glVertex3d(-1.0, 1.0,-1.0)
|
64
78
|
glVertex3d(-1.0,-1.0, 1.0)
|
@@ -66,7 +80,7 @@ class CubeFrame < Wx::Frame
|
|
66
80
|
glVertex3d(-1.0, 1.0,-1.0)
|
67
81
|
glVertex3d(-1.0,-1.0,-1.0)
|
68
82
|
#right
|
69
|
-
glColor3d(0.0, 1.0,
|
83
|
+
glColor3d(0.0, 1.0, 0.0) # green
|
70
84
|
glVertex3d( 1.0,-1.0, 1.0)
|
71
85
|
glVertex3d( 1.0,-1.0,-1.0)
|
72
86
|
glVertex3d( 1.0, 1.0, 1.0)
|
@@ -74,7 +88,7 @@ class CubeFrame < Wx::Frame
|
|
74
88
|
glVertex3d( 1.0,-1.0,-1.0)
|
75
89
|
glVertex3d( 1.0, 1.0,-1.0)
|
76
90
|
#up
|
77
|
-
glColor3d(0.0, 0.0, 1.0)
|
91
|
+
glColor3d(0.0, 0.0, 1.0) # blue
|
78
92
|
glVertex3d(-1.0, 1.0, 1.0)
|
79
93
|
glVertex3d(-1.0,-1.0, 1.0)
|
80
94
|
glVertex3d( 1.0, 1.0, 1.0)
|
@@ -82,7 +96,7 @@ class CubeFrame < Wx::Frame
|
|
82
96
|
glVertex3d(-1.0,-1.0, 1.0)
|
83
97
|
glVertex3d( 1.0,-1.0, 1.0)
|
84
98
|
#down
|
85
|
-
glColor3d(
|
99
|
+
glColor3d(0.0, 1.0, 1.0) # cyan
|
86
100
|
glVertex3d(-1.0,-1.0,-1.0)
|
87
101
|
glVertex3d(-1.0, 1.0,-1.0)
|
88
102
|
glVertex3d( 1.0,-1.0,-1.0)
|
@@ -90,7 +104,7 @@ class CubeFrame < Wx::Frame
|
|
90
104
|
glVertex3d(-1.0, 1.0,-1.0)
|
91
105
|
glVertex3d( 1.0, 1.0,-1.0)
|
92
106
|
#front
|
93
|
-
glColor3d(1.0,
|
107
|
+
glColor3d(1.0, 0.0, 0.0) # red
|
94
108
|
glVertex3d(-1.0,-1.0, 1.0)
|
95
109
|
glVertex3d(-1.0,-1.0,-1.0)
|
96
110
|
glVertex3d( 1.0,-1.0, 1.0)
|
@@ -98,7 +112,7 @@ class CubeFrame < Wx::Frame
|
|
98
112
|
glVertex3d(-1.0,-1.0,-1.0)
|
99
113
|
glVertex3d( 1.0,-1.0,-1.0)
|
100
114
|
#back
|
101
|
-
glColor3d(
|
115
|
+
glColor3d(1.0, 0.0, 1.0) # magenta
|
102
116
|
glVertex3d( 1.0, 1.0, 1.0)
|
103
117
|
glVertex3d( 1.0, 1.0,-1.0)
|
104
118
|
glVertex3d(-1.0, 1.0, 1.0)
|
@@ -113,5 +127,4 @@ end
|
|
113
127
|
Wx::App.run do
|
114
128
|
self.app_name = 'GLCanvas Cube'
|
115
129
|
frame = CubeFrame.new("OpenGL Canvas wxRuby App")
|
116
|
-
frame.show
|
117
130
|
end
|
@@ -0,0 +1,191 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
|
5
|
+
# OpenGL sample by Chauk-Mean Proum featuring an animated cube with lighting.
|
6
|
+
# OpenGL commands are structured following the Red Book :
|
7
|
+
# - init part (opengl_init)
|
8
|
+
# - resize part (opengl_resize)
|
9
|
+
# - render part (opengl_render)
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'rubygems'
|
13
|
+
rescue LoadError
|
14
|
+
end
|
15
|
+
require 'wx'
|
16
|
+
require 'gl'
|
17
|
+
require 'glu'
|
18
|
+
|
19
|
+
include Gl
|
20
|
+
include Glu
|
21
|
+
|
22
|
+
class CubeFrame < Wx::Frame
|
23
|
+
def initialize(title)
|
24
|
+
super(nil, :title => title)
|
25
|
+
|
26
|
+
sizer = Wx::VBoxSizer.new
|
27
|
+
|
28
|
+
attrib = [Wx::GL_RGBA, Wx::GL_DOUBLEBUFFER, Wx::GL_DEPTH_SIZE, 24]
|
29
|
+
# Use of keyword arguments for the GLCanvas initializer
|
30
|
+
@canvas = Wx::GLCanvas.new(self, :attrib_list => attrib, :size => [600, 600])
|
31
|
+
sizer.add_item @canvas, :proportion => 1, :flag => Wx::EXPAND
|
32
|
+
|
33
|
+
text = Wx::StaticText.new(self, :label => "Use Up/Down/Left/Right keys to change rotation direction")
|
34
|
+
sizer.add_item text
|
35
|
+
|
36
|
+
self.sizer = sizer
|
37
|
+
sizer.fit(self)
|
38
|
+
|
39
|
+
self.show
|
40
|
+
# A GL context can be set to a GL canvas only if the latter has been shown
|
41
|
+
opengl_init()
|
42
|
+
opengl_resize()
|
43
|
+
|
44
|
+
# set the focus on the GL canvas for key press
|
45
|
+
@canvas.set_focus
|
46
|
+
@canvas.evt_key_down {|evt| on_key_down(evt.get_key_code) }
|
47
|
+
|
48
|
+
@canvas.evt_paint { @canvas.paint { opengl_render } }
|
49
|
+
@canvas.evt_size do |e|
|
50
|
+
opengl_resize
|
51
|
+
e.skip()
|
52
|
+
end
|
53
|
+
|
54
|
+
# set up the animation
|
55
|
+
@rotate = [15.0, -30.0, 0.0]
|
56
|
+
@anim_step_x_axis = -1.0
|
57
|
+
@anim_step_y_axis = -2.0
|
58
|
+
anim_timer = Wx::Timer.new(self)
|
59
|
+
anim_timer.start(25) # start the timer with a period of 25 ms
|
60
|
+
evt_timer anim_timer, :animate
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
def animate
|
65
|
+
@rotate[0] += @anim_step_x_axis
|
66
|
+
@rotate[1] += @anim_step_y_axis
|
67
|
+
opengl_render()
|
68
|
+
end
|
69
|
+
|
70
|
+
def on_key_down(key)
|
71
|
+
case key
|
72
|
+
when Wx::K_UP
|
73
|
+
@anim_step_x_axis = -1.0
|
74
|
+
when Wx::K_DOWN
|
75
|
+
@anim_step_x_axis = 1.0
|
76
|
+
when Wx::K_LEFT
|
77
|
+
@anim_step_y_axis = -2.0
|
78
|
+
when Wx::K_RIGHT
|
79
|
+
@anim_step_y_axis = 2.0
|
80
|
+
end
|
81
|
+
opengl_render()
|
82
|
+
end
|
83
|
+
|
84
|
+
|
85
|
+
def opengl_init
|
86
|
+
# initialize the GL rendering
|
87
|
+
@canvas.set_current
|
88
|
+
|
89
|
+
mat_specular = [1.0, 1.0, 1.0, 1.0]
|
90
|
+
mat_shininess = [90.0]
|
91
|
+
|
92
|
+
light_ambient = [0.9, 0.9, 0.9, 1.0]
|
93
|
+
light_position = [-1.0, 4.0, 7.0, 0.0]
|
94
|
+
|
95
|
+
glLoadIdentity()
|
96
|
+
|
97
|
+
# glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular)
|
98
|
+
# glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess)
|
99
|
+
|
100
|
+
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_ambient)
|
101
|
+
glLightfv(GL_LIGHT0, GL_POSITION, light_position)
|
102
|
+
|
103
|
+
glColorMaterial(GL_FRONT, GL_DIFFUSE)
|
104
|
+
|
105
|
+
glEnable(GL_LIGHTING)
|
106
|
+
glEnable(GL_LIGHT0)
|
107
|
+
glEnable(GL_COLOR_MATERIAL)
|
108
|
+
|
109
|
+
glDepthFunc(GL_LEQUAL)
|
110
|
+
glEnable(GL_DEPTH_TEST)
|
111
|
+
end
|
112
|
+
|
113
|
+
def opengl_resize
|
114
|
+
@canvas.set_current
|
115
|
+
sz = @canvas.size
|
116
|
+
w = sz.width
|
117
|
+
h = sz.height
|
118
|
+
glViewport(0, 0, w, h)
|
119
|
+
glMatrixMode(GL_PROJECTION)
|
120
|
+
glLoadIdentity()
|
121
|
+
gluPerspective(30.0, w.to_f/h.to_f, 1.0, 20.0)
|
122
|
+
glMatrixMode(GL_MODELVIEW)
|
123
|
+
end
|
124
|
+
|
125
|
+
def opengl_render
|
126
|
+
@canvas.set_current
|
127
|
+
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
|
128
|
+
glLoadIdentity()
|
129
|
+
|
130
|
+
gluLookAt(0.0, 3.0, 8.0, # position
|
131
|
+
0.0, 0.0, 0.0, # target
|
132
|
+
0.0, 1.0, 0.0) # up direction
|
133
|
+
|
134
|
+
glRotate(@rotate[0], 1.0, 0.0, 0.0)
|
135
|
+
glRotate(@rotate[1], 0.0, 1.0, 0.0)
|
136
|
+
glRotate(@rotate[2], 0.0, 0.0, 1.0)
|
137
|
+
|
138
|
+
glBegin(GL_QUADS)
|
139
|
+
|
140
|
+
#left
|
141
|
+
glNormal3d(-1.0, 0.0, 0.0) # normal vector is required for proper lighting
|
142
|
+
glColor3d(1.0, 1.0, 0.0) # yellow
|
143
|
+
glVertex3d(-1.0,-1.0,-1.0)
|
144
|
+
glVertex3d(-1.0, 1.0,-1.0)
|
145
|
+
glVertex3d(-1.0, 1.0, 1.0)
|
146
|
+
glVertex3d(-1.0,-1.0, 1.0)
|
147
|
+
#right
|
148
|
+
glNormal3d( 1.0, 0.0, 0.0)
|
149
|
+
glColor3d(0.0, 1.0, 0.0) # green
|
150
|
+
glVertex3d( 1.0,-1.0,-1.0)
|
151
|
+
glVertex3d( 1.0, 1.0,-1.0)
|
152
|
+
glVertex3d( 1.0, 1.0, 1.0)
|
153
|
+
glVertex3d( 1.0,-1.0, 1.0)
|
154
|
+
#up
|
155
|
+
glNormal3d( 0.0, 1.0, 0.0)
|
156
|
+
glColor3d(0.0, 0.0, 1.0) # blue
|
157
|
+
glVertex3d(-1.0, 1.0,-1.0)
|
158
|
+
glVertex3d( 1.0, 1.0,-1.0)
|
159
|
+
glVertex3d( 1.0, 1.0, 1.0)
|
160
|
+
glVertex3d(-1.0, 1.0, 1.0)
|
161
|
+
#down
|
162
|
+
glNormal3d( 0.0,-1.0, 0.0)
|
163
|
+
glColor3d(0.0, 1.0, 1.0) # cyan
|
164
|
+
glVertex3d(-1.0,-1.0,-1.0)
|
165
|
+
glVertex3d( 1.0,-1.0,-1.0)
|
166
|
+
glVertex3d( 1.0,-1.0, 1.0)
|
167
|
+
glVertex3d(-1.0,-1.0, 1.0)
|
168
|
+
#front
|
169
|
+
glNormal3d( 0.0, 0.0, 1.0)
|
170
|
+
glColor3d(1.0, 0.0, 0.0) # red
|
171
|
+
glVertex3d(-1.0,-1.0, 1.0)
|
172
|
+
glVertex3d(-1.0, 1.0, 1.0)
|
173
|
+
glVertex3d( 1.0, 1.0, 1.0)
|
174
|
+
glVertex3d( 1.0,-1.0, 1.0)
|
175
|
+
#back
|
176
|
+
glNormal3d( 0.0, 0.0,-1.0)
|
177
|
+
glColor3d(1.0, 0.0, 1.0) # magenta
|
178
|
+
glVertex3d(-1.0,-1.0,-1.0)
|
179
|
+
glVertex3d(-1.0, 1.0,-1.0)
|
180
|
+
glVertex3d( 1.0, 1.0,-1.0)
|
181
|
+
glVertex3d( 1.0,-1.0,-1.0)
|
182
|
+
glEnd()
|
183
|
+
glFlush()
|
184
|
+
@canvas.swap_buffers
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
Wx::App.run do
|
189
|
+
self.app_name = 'GLCanvas Cube'
|
190
|
+
frame = CubeFrame.new("OpenGL Canvas wxRuby : Animation and Lighting")
|
191
|
+
end
|