cosmos 4.2.2-java → 4.2.3-java
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/.travis.yml +7 -3
- data/autohotkey/tools/cmd_sender.ahk +35 -35
- data/bin/dart_import +3 -1
- data/cosmos.gemspec +4 -3
- data/data/crc.txt +14 -14
- data/demo/config/dart/Gemfile +2 -2
- data/demo/config/data/crc.txt +1 -1
- data/install/config/dart/Gemfile +2 -2
- data/install/config/data/crc.txt +3 -3
- data/lib/cosmos/dart/lib/dart_common.rb +1 -1
- data/lib/cosmos/gui/opengl/gl_scene.rb +3 -3
- data/lib/cosmos/gui/opengl/gl_shape.rb +27 -29
- data/lib/cosmos/gui/opengl/gl_viewer.rb +127 -124
- data/lib/cosmos/gui/opengl/opengl.rb +6 -0
- data/lib/cosmos/gui/opengl/stl_reader.rb +7 -7
- data/lib/cosmos/gui/opengl/stl_shape.rb +16 -16
- data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +53 -51
- data/lib/cosmos/packets/commands.rb +22 -0
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +20 -0
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +6 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +1 -1
- data/lib/cosmos/utilities/ruby_lex_utils.rb +1 -6
- data/lib/cosmos/version.rb +4 -4
- metadata +2 -8
@@ -209,31 +209,32 @@ module Cosmos
|
|
209
209
|
pickh = @wvt.h / h.to_f
|
210
210
|
|
211
211
|
# Set pick projection matrix
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
212
|
+
glMatrixMode(OpenGL::GL_PROJECTION)
|
213
|
+
glLoadIdentity()
|
214
|
+
glTranslatef(pickx, picky, 0.0)
|
215
|
+
glScalef(pickw, pickh, 1.0)
|
216
216
|
case projection
|
217
217
|
when :PARALLEL
|
218
|
-
|
218
|
+
glOrtho(@wvt.left, @wvt.right, @wvt.bottom, @wvt.top, @wvt.hither, @wvt.yon)
|
219
219
|
when :PERSPECTIVE
|
220
|
-
|
220
|
+
glFrustum(@wvt.left, @wvt.right, @wvt.bottom, @wvt.top, @wvt.hither, @wvt.yon)
|
221
221
|
end
|
222
222
|
|
223
223
|
# Model matrix
|
224
|
-
|
225
|
-
|
224
|
+
glMatrixMode(OpenGL::GL_MODELVIEW)
|
225
|
+
glLoadMatrixf(@transform.to_a.flatten.pack('F*'))
|
226
226
|
|
227
227
|
# Loop until room enough to fit
|
228
228
|
while true
|
229
229
|
nhits = 0
|
230
|
-
buffer =
|
231
|
-
|
232
|
-
|
233
|
-
|
230
|
+
buffer = ' ' * mh
|
231
|
+
glSelectBuffer(mh, buffer)
|
232
|
+
glRenderMode(OpenGL::GL_SELECT)
|
233
|
+
glInitNames()
|
234
|
+
glPushName(0)
|
234
235
|
@scene.hit(self) if @scene
|
235
|
-
|
236
|
-
nhits =
|
236
|
+
glPopName()
|
237
|
+
nhits = glRenderMode(OpenGL::GL_RENDER)
|
237
238
|
mh <<= 1
|
238
239
|
break if nhits >= 0
|
239
240
|
end
|
@@ -273,111 +274,109 @@ module Cosmos
|
|
273
274
|
end
|
274
275
|
|
275
276
|
def initializeGL
|
276
|
-
GL.GetError()
|
277
|
-
|
278
277
|
# Initialize GL context
|
279
|
-
|
278
|
+
glRenderMode(OpenGL::GL_RENDER)
|
280
279
|
|
281
280
|
# Fast hints
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
281
|
+
glHint(OpenGL::GL_POLYGON_SMOOTH_HINT, OpenGL::GL_FASTEST)
|
282
|
+
glHint(OpenGL::GL_PERSPECTIVE_CORRECTION_HINT, OpenGL::GL_FASTEST)
|
283
|
+
glHint(OpenGL::GL_FOG_HINT, OpenGL::GL_FASTEST)
|
284
|
+
glHint(OpenGL::GL_LINE_SMOOTH_HINT, OpenGL::GL_FASTEST)
|
285
|
+
glHint(OpenGL::GL_POINT_SMOOTH_HINT, OpenGL::GL_FASTEST)
|
287
286
|
|
288
287
|
# Z-buffer test on
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
288
|
+
glEnable(OpenGL::GL_DEPTH_TEST)
|
289
|
+
glDepthFunc(OpenGL::GL_LESS)
|
290
|
+
glDepthRange(0.0, 1.0)
|
291
|
+
glClearDepth(1.0)
|
292
|
+
glClearColor(@top_background[0], @top_background[1], @top_background[2], @top_background[3])
|
294
293
|
|
295
294
|
# No face culling
|
296
|
-
|
297
|
-
|
298
|
-
|
295
|
+
glDisable(OpenGL::GL_CULL_FACE)
|
296
|
+
glCullFace(OpenGL::GL_BACK)
|
297
|
+
glFrontFace(OpenGL::GL_CCW)
|
299
298
|
|
300
299
|
# Two sided lighting
|
301
|
-
|
302
|
-
|
300
|
+
glLightModeli(OpenGL::GL_LIGHT_MODEL_TWO_SIDE, 1)
|
301
|
+
glLightModelfv(OpenGL::GL_LIGHT_MODEL_AMBIENT, @ambient.pack('F*'))
|
303
302
|
|
304
303
|
# Preferred blend over background
|
305
|
-
|
304
|
+
glBlendFunc(OpenGL::GL_SRC_ALPHA, OpenGL::GL_ONE_MINUS_SRC_ALPHA)
|
306
305
|
|
307
306
|
enable_light(@light)
|
308
307
|
# Viewer is close
|
309
|
-
|
308
|
+
glLightModeli(OpenGL::GL_LIGHT_MODEL_LOCAL_VIEWER, 1)
|
310
309
|
|
311
310
|
enable_material(@material)
|
312
311
|
# Vertex colors change both diffuse and ambient
|
313
|
-
|
314
|
-
|
312
|
+
glColorMaterial(OpenGL::GL_FRONT_AND_BACK, OpenGL::GL_AMBIENT_AND_DIFFUSE)
|
313
|
+
glDisable(OpenGL::GL_COLOR_MATERIAL)
|
315
314
|
|
316
315
|
# Simplest and fastest drawing is default
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
316
|
+
glShadeModel(OpenGL::GL_FLAT)
|
317
|
+
glDisable(OpenGL::GL_BLEND)
|
318
|
+
glDisable(OpenGL::GL_LINE_SMOOTH)
|
319
|
+
glDisable(OpenGL::GL_POINT_SMOOTH)
|
320
|
+
glDisable(OpenGL::GL_COLOR_MATERIAL)
|
322
321
|
|
323
322
|
# Lighting
|
324
|
-
|
323
|
+
glDisable(OpenGL::GL_LIGHTING)
|
325
324
|
|
326
325
|
# No normalization of normals (it's broken on some machines anyway)
|
327
|
-
|
326
|
+
glDisable(OpenGL::GL_NORMALIZE)
|
328
327
|
|
329
328
|
# Dithering if needed
|
330
|
-
|
329
|
+
glDisable(OpenGL::GL_DITHER)
|
331
330
|
end
|
332
331
|
|
333
332
|
def paintGL
|
334
333
|
# Set viewport
|
335
|
-
|
334
|
+
glViewport(0, 0, @wvt.w, @wvt.h)
|
336
335
|
reset_gl_state()
|
337
336
|
clear_solid_background()
|
338
337
|
|
339
338
|
# Depth test on by default
|
340
|
-
|
341
|
-
|
339
|
+
glDepthMask(OpenGL::GL_TRUE)
|
340
|
+
glEnable(OpenGL::GL_DEPTH_TEST)
|
342
341
|
|
343
342
|
# Switch to projection matrix
|
344
|
-
|
345
|
-
|
343
|
+
glMatrixMode(OpenGL::GL_PROJECTION)
|
344
|
+
glLoadIdentity
|
346
345
|
case @projection
|
347
346
|
when :PARALLEL
|
348
|
-
|
347
|
+
glOrtho(@wvt.left, @wvt.right, @wvt.bottom, @wvt.top, @wvt.hither, @wvt.yon)
|
349
348
|
when :PERSPECTIVE
|
350
|
-
|
349
|
+
glFrustum(@wvt.left, @wvt.right, @wvt.bottom, @wvt.top, @wvt.hither, @wvt.yon)
|
351
350
|
end
|
352
351
|
|
353
352
|
# Switch to model matrix
|
354
|
-
|
355
|
-
|
353
|
+
glMatrixMode(OpenGL::GL_MODELVIEW)
|
354
|
+
glLoadIdentity
|
356
355
|
|
357
356
|
enable_light(@light)
|
358
357
|
enable_material(@material)
|
359
358
|
|
360
359
|
# Color commands change both
|
361
|
-
|
360
|
+
glColorMaterial(OpenGL::GL_FRONT_AND_BACK, OpenGL::GL_AMBIENT_AND_DIFFUSE)
|
362
361
|
# Global ambient light
|
363
|
-
|
362
|
+
glLightModelfv(OpenGL::GL_LIGHT_MODEL_AMBIENT, @ambient.pack('F*'))
|
364
363
|
|
365
364
|
# Enable fog
|
366
365
|
if @options.include?(:VIEWER_FOG)
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
366
|
+
glEnable(OpenGL::GL_FOG)
|
367
|
+
glFog(OpenGL::GL_FOG_COLOR, @top_background) # Disappear into the background
|
368
|
+
glFogf(OpenGL::GL_FOG_START, (@distance - @diameter).to_f) # Range tight around model position
|
369
|
+
glFogf(OpenGL::GL_FOG_END, (@distance + @diameter).to_f) # Far place same as clip plane:- clipped stuff is in the mist!
|
370
|
+
glFogi(OpenGL::GL_FOG_MODE, OpenGL::GL_LINEAR) # Simple linear depth cueing
|
372
371
|
end
|
373
372
|
|
374
373
|
# Dithering
|
375
|
-
|
374
|
+
glEnable(OpenGL::GL_DITHER) if @options.include?(:VIEWER_DITHER)
|
376
375
|
# Enable lighting
|
377
|
-
|
376
|
+
glEnable(OpenGL::GL_LIGHTING) if @options.include?(:VIEWER_LIGHTING)
|
378
377
|
|
379
378
|
# Set model matrix
|
380
|
-
|
379
|
+
glLoadMatrixf(@transform.to_a.flatten.pack('F*'))
|
381
380
|
|
382
381
|
draw_axis() if (@draw_axis and @draw_axis > 0)
|
383
382
|
|
@@ -386,49 +385,53 @@ module Cosmos
|
|
386
385
|
end
|
387
386
|
|
388
387
|
def reset_gl_state
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
388
|
+
glShadeModel(OpenGL::GL_SMOOTH)
|
389
|
+
glPolygonMode(OpenGL::GL_FRONT_AND_BACK, OpenGL::GL_FILL)
|
390
|
+
glDisable(OpenGL::GL_LIGHTING)
|
391
|
+
glDisable(OpenGL::GL_ALPHA_TEST)
|
392
|
+
glDisable(OpenGL::GL_BLEND)
|
393
|
+
glDisable(OpenGL::GL_DITHER)
|
394
|
+
glDisable(OpenGL::GL_FOG)
|
395
|
+
glDisable(OpenGL::GL_LOGIC_OP)
|
396
|
+
glDisable(OpenGL::GL_POLYGON_SMOOTH)
|
397
|
+
glDisable(OpenGL::GL_POLYGON_STIPPLE)
|
398
|
+
glDisable(OpenGL::GL_STENCIL_TEST)
|
399
|
+
glDisable(OpenGL::GL_CULL_FACE)
|
400
|
+
glDisable(OpenGL::GL_COLOR_MATERIAL)
|
402
401
|
|
403
402
|
# Reset matrices
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
403
|
+
glMatrixMode(OpenGL::GL_PROJECTION)
|
404
|
+
glLoadIdentity
|
405
|
+
glMatrixMode(OpenGL::GL_MODELVIEW)
|
406
|
+
glLoadIdentity
|
408
407
|
end
|
409
408
|
|
410
409
|
def clear_solid_background
|
411
|
-
|
412
|
-
|
410
|
+
glClearDepth(1.0)
|
411
|
+
glClearColor(@top_background[0], @top_background[1], @top_background[2], @top_background[3])
|
413
412
|
if @top_background == @bottom_background
|
414
413
|
begin
|
415
|
-
|
414
|
+
glClear(OpenGL::GL_COLOR_BUFFER_BIT | OpenGL::GL_DEPTH_BUFFER_BIT)
|
416
415
|
rescue
|
417
416
|
# Raises false error on Mac
|
418
417
|
end
|
419
418
|
else # Clear to gradient background
|
420
419
|
begin
|
421
|
-
|
420
|
+
glClear(OpenGL::GL_DEPTH_BUFFER_BIT)
|
422
421
|
rescue
|
423
422
|
# Raises false error on Mac
|
424
423
|
end
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
424
|
+
glDisable(OpenGL::GL_DEPTH_TEST)
|
425
|
+
glDepthMask(OpenGL::GL_FALSE)
|
426
|
+
glBegin(OpenGL::GL_TRIANGLE_STRIP)
|
427
|
+
glColor4f(@bottom_background[0], @bottom_background[1], @bottom_background[2], @bottom_background[3])
|
428
|
+
glVertex3f(-1.0, -1.0, 0.0)
|
429
|
+
glVertex3f(1.0, -1.0, 0.0)
|
430
|
+
glColor4f(@top_background[0], @top_background[1], @top_background[2], @bottom_background[3])
|
431
|
+
glVertex3f(-1.0, 1.0, 0.0)
|
432
|
+
glVertex3f(1.0, 1.0, 0.0)
|
430
433
|
begin
|
431
|
-
|
434
|
+
glEnd
|
432
435
|
rescue
|
433
436
|
# Raises false error on Mac
|
434
437
|
end
|
@@ -436,58 +439,58 @@ module Cosmos
|
|
436
439
|
end
|
437
440
|
|
438
441
|
def draw_axis
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
442
|
+
glPushMatrix
|
443
|
+
glLineWidth(2.5)
|
444
|
+
glColor3f(1.0, 0.0, 0.0)
|
445
|
+
glBegin(OpenGL::GL_LINES)
|
446
|
+
glVertex3f(-@draw_axis.to_f, 0.0, 0.0)
|
447
|
+
glVertex3f(@draw_axis.to_f, 0.0, 0.0)
|
445
448
|
begin
|
446
|
-
|
449
|
+
glEnd
|
447
450
|
rescue
|
448
451
|
# Raises false error on Mac
|
449
452
|
end
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
453
|
+
glColor3f(0.0, 1.0, 0.0)
|
454
|
+
glBegin(OpenGL::GL_LINES)
|
455
|
+
glVertex3f(0, -@draw_axis, 0.0)
|
456
|
+
glVertex3f(0, @draw_axis, 0)
|
454
457
|
begin
|
455
|
-
|
458
|
+
glEnd
|
456
459
|
rescue
|
457
460
|
# Raises false error on Mac
|
458
461
|
end
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
462
|
+
glColor3f(0.0, 0.0, 1.0)
|
463
|
+
glBegin(OpenGL::GL_LINES)
|
464
|
+
glVertex3f(0, 0, -@draw_axis)
|
465
|
+
glVertex3f(0, 0, @draw_axis)
|
463
466
|
begin
|
464
|
-
|
467
|
+
glEnd
|
465
468
|
rescue
|
466
469
|
# Raises false error on Mac
|
467
470
|
end
|
468
|
-
|
471
|
+
glPopMatrix
|
469
472
|
end
|
470
473
|
|
471
474
|
def enable_light(light)
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
475
|
+
glEnable(OpenGL::GL_LIGHT0)
|
476
|
+
glLightfv(OpenGL::GL_LIGHT0, OpenGL::GL_AMBIENT, light.ambient.pack('F*'))
|
477
|
+
glLightfv(OpenGL::GL_LIGHT0, OpenGL::GL_DIFFUSE, light.diffuse.pack('F*'))
|
478
|
+
glLightfv(OpenGL::GL_LIGHT0, OpenGL::GL_SPECULAR, light.specular.pack('F*'))
|
479
|
+
glLightfv(OpenGL::GL_LIGHT0, OpenGL::GL_POSITION, light.position.pack('F*'))
|
480
|
+
glLightfv(OpenGL::GL_LIGHT0, OpenGL::GL_SPOT_DIRECTION, light.direction.pack('F*'))
|
481
|
+
glLightf(OpenGL::GL_LIGHT0, OpenGL::GL_SPOT_EXPONENT, light.exponent)
|
482
|
+
glLightf(OpenGL::GL_LIGHT0, OpenGL::GL_SPOT_CUTOFF, light.cutoff)
|
483
|
+
glLightf(OpenGL::GL_LIGHT0, OpenGL::GL_CONSTANT_ATTENUATION, light.c_attn)
|
484
|
+
glLightf(OpenGL::GL_LIGHT0, OpenGL::GL_LINEAR_ATTENUATION, light.l_attn)
|
485
|
+
glLightf(OpenGL::GL_LIGHT0, OpenGL::GL_QUADRATIC_ATTENUATION, light.q_attn)
|
483
486
|
end
|
484
487
|
|
485
488
|
def enable_material(material)
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
489
|
+
glMaterialfv(OpenGL::GL_FRONT_AND_BACK, OpenGL::GL_AMBIENT, material.ambient.pack('F*'))
|
490
|
+
glMaterialfv(OpenGL::GL_FRONT_AND_BACK, OpenGL::GL_DIFFUSE, material.diffuse.pack('F*'))
|
491
|
+
glMaterialfv(OpenGL::GL_FRONT_AND_BACK, OpenGL::GL_SPECULAR, material.specular.pack('F*'))
|
492
|
+
glMaterialfv(OpenGL::GL_FRONT_AND_BACK, OpenGL::GL_EMISSION, material.emission.pack('F*'))
|
493
|
+
glMaterialf(OpenGL::GL_FRONT_AND_BACK, OpenGL::GL_SHININESS, material.shininess)
|
491
494
|
end
|
492
495
|
|
493
496
|
def resizeGL(width, height)
|
@@ -65,13 +65,13 @@ module Cosmos
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def draw_triangles
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
68
|
+
glEnableClientState(OpenGL::GL_NORMAL_ARRAY)
|
69
|
+
glEnableClientState(OpenGL::GL_VERTEX_ARRAY)
|
70
|
+
glNormalPointer(OpenGL::GL_FLOAT, 0, @normals_packed)
|
71
|
+
glVertexPointer(3, OpenGL::GL_FLOAT, 0, @vertexes_packed)
|
72
|
+
glDrawArrays(OpenGL::GL_TRIANGLES, 0, @triangles.length * 3)
|
73
|
+
glDisableClientState(OpenGL::GL_NORMAL_ARRAY)
|
74
|
+
glDisableClientState(OpenGL::GL_VERTEX_ARRAY)
|
75
75
|
end
|
76
76
|
|
77
77
|
def process(filename, scaling_factor = 1.0)
|
@@ -63,17 +63,17 @@ module Cosmos
|
|
63
63
|
def drawshape(viewer)
|
64
64
|
@viewer = viewer
|
65
65
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
66
|
+
glPushMatrix()
|
67
|
+
glEnable(OpenGL::GL_BLEND)
|
68
|
+
glBlendFunc(OpenGL::GL_SRC_ALPHA, OpenGL::GL_ONE_MINUS_SRC_ALPHA)
|
69
|
+
glColor4f(@color[0], @color[1], @color[2], @color[3])
|
70
|
+
glRotatef(@rotation_x, 1.0, 0.0, 0.0) if @rotation_x
|
71
|
+
glRotatef(@rotation_y, 0.0, 1.0, 0.0) if @rotation_y
|
72
|
+
glRotatef(@rotation_z, 0.0, 0.0, 1.0) if @rotation_z
|
73
|
+
glMaterialfv(OpenGL::GL_FRONT_AND_BACK, OpenGL::GL_AMBIENT_AND_DIFFUSE, @color.pack('F*'))
|
74
|
+
draw_stl()
|
75
|
+
glDisable(OpenGL::GL_BLEND)
|
76
|
+
glPopMatrix()
|
77
77
|
end
|
78
78
|
|
79
79
|
def export
|
@@ -110,18 +110,18 @@ module Cosmos
|
|
110
110
|
end
|
111
111
|
|
112
112
|
def draw_stl
|
113
|
-
|
114
|
-
|
115
|
-
|
113
|
+
glPushMatrix()
|
114
|
+
glMaterialfv(OpenGL::GL_FRONT_AND_BACK, OpenGL::GL_SPECULAR, [1.0, 1.0, 1.0].pack("F*"))
|
115
|
+
glMaterialf(OpenGL::GL_FRONT_AND_BACK, OpenGL::GL_SHININESS, 100.0)
|
116
116
|
if @mystl.triangles.empty?
|
117
117
|
load_stl
|
118
118
|
else
|
119
119
|
@mystl.draw_triangles()
|
120
120
|
end
|
121
|
-
|
121
|
+
glPopMatrix()
|
122
122
|
|
123
123
|
# Set Pixel Storage Size
|
124
|
-
|
124
|
+
glPixelStorei(OpenGL::GL_UNPACK_ALIGNMENT, 1)
|
125
125
|
end
|
126
126
|
end
|
127
127
|
end
|