fxruby 1.6.42 → 1.6.43
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/.yardopts +1 -1
- data/Gemfile +1 -2
- data/History.md +11 -0
- data/README.rdoc +4 -4
- data/Rakefile +10 -0
- data/appveyor.yml +4 -0
- data/docs/Fox.html +11184 -0
- data/docs/Fox/Canvas.html +141 -0
- data/docs/Fox/Canvas/CanvasError.html +124 -0
- data/docs/Fox/Canvas/CircleShape.html +477 -0
- data/docs/Fox/Canvas/ImageShape.html +477 -0
- data/docs/Fox/Canvas/LineShape.html +1005 -0
- data/docs/Fox/Canvas/PolygonShape.html +145 -0
- data/docs/Fox/Canvas/RectangleShape.html +439 -0
- data/docs/Fox/Canvas/SelectionPolicy.html +352 -0
- data/docs/Fox/Canvas/Shape.html +1955 -0
- data/docs/Fox/Canvas/ShapeCanvas.html +2031 -0
- data/docs/Fox/Canvas/ShapeGroup.html +527 -0
- data/docs/Fox/Canvas/SingleSelectionPolicy.html +291 -0
- data/docs/Fox/Canvas/TextShape.html +609 -0
- data/docs/Fox/FTNonModal.html +550 -0
- data/docs/Fox/FX4Splitter.html +1336 -0
- data/docs/Fox/FX7Segment.html +1010 -0
- data/docs/Fox/FXAccelTable.html +715 -0
- data/docs/Fox/FXApp.html +7998 -0
- data/docs/Fox/FXArc.html +562 -0
- data/docs/Fox/FXArrowButton.html +865 -0
- data/docs/Fox/FXBMPIcon.html +450 -0
- data/docs/Fox/FXBMPImage.html +434 -0
- data/docs/Fox/FXBitmap.html +1362 -0
- data/docs/Fox/FXBitmapFrame.html +595 -0
- data/docs/Fox/FXBitmapView.html +1451 -0
- data/docs/Fox/FXButton.html +534 -0
- data/docs/Fox/FXCURCursor.html +261 -0
- data/docs/Fox/FXCalendar.html +880 -0
- data/docs/Fox/FXCanvas.html +311 -0
- data/docs/Fox/FXCheckButton.html +949 -0
- data/docs/Fox/FXChoiceBox.html +472 -0
- data/docs/Fox/FXColor.html +1519 -0
- data/docs/Fox/FXColorBar.html +759 -0
- data/docs/Fox/FXColorDialog.html +591 -0
- data/docs/Fox/FXColorItem.html +323 -0
- data/docs/Fox/FXColorList.html +712 -0
- data/docs/Fox/FXColorRing.html +817 -0
- data/docs/Fox/FXColorSelector.html +796 -0
- data/docs/Fox/FXColorWell.html +850 -0
- data/docs/Fox/FXColorWheel.html +770 -0
- data/docs/Fox/FXComboBox.html +2939 -0
- data/docs/Fox/FXComboTableItem.html +544 -0
- data/docs/Fox/FXCommand.html +526 -0
- data/docs/Fox/FXComposite.html +433 -0
- data/docs/Fox/FXCursor.html +779 -0
- data/docs/Fox/FXDC.html +5231 -0
- data/docs/Fox/FXDCPrint.html +696 -0
- data/docs/Fox/FXDCWindow.html +358 -0
- data/docs/Fox/FXDataTarget.html +573 -0
- data/docs/Fox/FXDebugTarget.html +305 -0
- data/docs/Fox/FXDelegator.html +305 -0
- data/docs/Fox/FXDial.html +1133 -0
- data/docs/Fox/FXDialogBox.html +413 -0
- data/docs/Fox/FXDict.html +1063 -0
- data/docs/Fox/FXDirBox.html +752 -0
- data/docs/Fox/FXDirDialog.html +914 -0
- data/docs/Fox/FXDirItem.html +989 -0
- data/docs/Fox/FXDirList.html +1554 -0
- data/docs/Fox/FXDirSelector.html +995 -0
- data/docs/Fox/FXDockBar.html +1451 -0
- data/docs/Fox/FXDockHandler.html +468 -0
- data/docs/Fox/FXDockSite.html +678 -0
- data/docs/Fox/FXDockTitle.html +606 -0
- data/docs/Fox/FXDocument.html +536 -0
- data/docs/Fox/FXDragCorner.html +440 -0
- data/docs/Fox/FXDrawable.html +478 -0
- data/docs/Fox/FXDriveBox.html +746 -0
- data/docs/Fox/FXEvent.html +1736 -0
- data/docs/Fox/FXExtentd.html +1374 -0
- data/docs/Fox/FXExtentf.html +1374 -0
- data/docs/Fox/FXFileAssoc.html +850 -0
- data/docs/Fox/FXFileDialog.html +2688 -0
- data/docs/Fox/FXFileDict.html +1058 -0
- data/docs/Fox/FXFileItem.html +1141 -0
- data/docs/Fox/FXFileList.html +2259 -0
- data/docs/Fox/FXFileSelector.html +2529 -0
- data/docs/Fox/FXFileStream.html +503 -0
- data/docs/Fox/FXFoldingItem.html +2822 -0
- data/docs/Fox/FXFoldingList.html +5189 -0
- data/docs/Fox/FXFont.html +2998 -0
- data/docs/Fox/FXFontDesc.html +710 -0
- data/docs/Fox/FXFontDialog.html +420 -0
- data/docs/Fox/FXFontSelector.html +576 -0
- data/docs/Fox/FXFrame.html +1012 -0
- data/docs/Fox/FXGIFCursor.html +337 -0
- data/docs/Fox/FXGIFIcon.html +450 -0
- data/docs/Fox/FXGIFImage.html +434 -0
- data/docs/Fox/FXGLCanvas.html +700 -0
- data/docs/Fox/FXGLCone.html +785 -0
- data/docs/Fox/FXGLContext.html +649 -0
- data/docs/Fox/FXGLCube.html +703 -0
- data/docs/Fox/FXGLCylinder.html +791 -0
- data/docs/Fox/FXGLGroup.html +1385 -0
- data/docs/Fox/FXGLLine.html +653 -0
- data/docs/Fox/FXGLObject.html +759 -0
- data/docs/Fox/FXGLPoint.html +561 -0
- data/docs/Fox/FXGLShape.html +714 -0
- data/docs/Fox/FXGLSphere.html +626 -0
- data/docs/Fox/FXGLViewer.html +3506 -0
- data/docs/Fox/FXGLVisual.html +2147 -0
- data/docs/Fox/FXGradient.html +562 -0
- data/docs/Fox/FXGradientBar.html +2479 -0
- data/docs/Fox/FXGroupBox.html +688 -0
- data/docs/Fox/FXHeader.html +3040 -0
- data/docs/Fox/FXHeaderItem.html +1353 -0
- data/docs/Fox/FXHiliteStyle.html +804 -0
- data/docs/Fox/FXHorizontalFrame.html +359 -0
- data/docs/Fox/FXHorizontalSeparator.html +349 -0
- data/docs/Fox/FXICOIcon.html +450 -0
- data/docs/Fox/FXICOImage.html +434 -0
- data/docs/Fox/FXIcon.html +384 -0
- data/docs/Fox/FXIconDict.html +752 -0
- data/docs/Fox/FXIconItem.html +1518 -0
- data/docs/Fox/FXIconList.html +4676 -0
- data/docs/Fox/FXIconSource.html +963 -0
- data/docs/Fox/FXId.html +712 -0
- data/docs/Fox/FXImage.html +2328 -0
- data/docs/Fox/FXImageFrame.html +489 -0
- data/docs/Fox/FXImageView.html +504 -0
- data/docs/Fox/FXInputDialog.html +894 -0
- data/docs/Fox/FXIrb.html +942 -0
- data/docs/Fox/FXJPGIcon.html +607 -0
- data/docs/Fox/FXJPGImage.html +591 -0
- data/docs/Fox/FXKnob.html +1048 -0
- data/docs/Fox/FXLabel.html +1013 -0
- data/docs/Fox/FXLight.html +920 -0
- data/docs/Fox/FXList.html +3717 -0
- data/docs/Fox/FXListBox.html +2518 -0
- data/docs/Fox/FXListItem.html +1459 -0
- data/docs/Fox/FXMDIChild.html +2175 -0
- data/docs/Fox/FXMDIClient.html +781 -0
- data/docs/Fox/FXMDIDeleteButton.html +334 -0
- data/docs/Fox/FXMDIMaximizeButton.html +334 -0
- data/docs/Fox/FXMDIMenu.html +335 -0
- data/docs/Fox/FXMDIMinimizeButton.html +334 -0
- data/docs/Fox/FXMDIRestoreButton.html +334 -0
- data/docs/Fox/FXMDIWindowButton.html +334 -0
- data/docs/Fox/FXMainWindow.html +337 -0
- data/docs/Fox/FXMaterial.html +570 -0
- data/docs/Fox/FXMatrix.html +734 -0
- data/docs/Fox/FXMemoryBuffer.html +472 -0
- data/docs/Fox/FXMemoryStream.html +632 -0
- data/docs/Fox/FXMenuBar.html +347 -0
- data/docs/Fox/FXMenuButton.html +829 -0
- data/docs/Fox/FXMenuCaption.html +1080 -0
- data/docs/Fox/FXMenuCascade.html +388 -0
- data/docs/Fox/FXMenuCheck.html +721 -0
- data/docs/Fox/FXMenuCommand.html +400 -0
- data/docs/Fox/FXMenuPane.html +333 -0
- data/docs/Fox/FXMenuRadio.html +721 -0
- data/docs/Fox/FXMenuSeparator.html +440 -0
- data/docs/Fox/FXMenuTitle.html +405 -0
- data/docs/Fox/FXMessageBox.html +658 -0
- data/docs/Fox/FXObject.html +545 -0
- data/docs/Fox/FXOption.html +491 -0
- data/docs/Fox/FXOptionMenu.html +885 -0
- data/docs/Fox/FXPCXIcon.html +450 -0
- data/docs/Fox/FXPCXImage.html +434 -0
- data/docs/Fox/FXPNGIcon.html +524 -0
- data/docs/Fox/FXPNGImage.html +508 -0
- data/docs/Fox/FXPPMIcon.html +450 -0
- data/docs/Fox/FXPPMImage.html +373 -0
- data/docs/Fox/FXPSBounds.html +500 -0
- data/docs/Fox/FXPacker.html +1229 -0
- data/docs/Fox/FXPicker.html +345 -0
- data/docs/Fox/FXPopup.html +1099 -0
- data/docs/Fox/FXPrintDialog.html +485 -0
- data/docs/Fox/FXPrinter.html +1330 -0
- data/docs/Fox/FXProgressBar.html +1150 -0
- data/docs/Fox/FXProgressDialog.html +715 -0
- data/docs/Fox/FXPseudoKeyboard.html +428 -0
- data/docs/Fox/FXPseudoMouse.html +800 -0
- data/docs/Fox/FXPseudoTarget.html +472 -0
- data/docs/Fox/FXQuatd.html +1377 -0
- data/docs/Fox/FXQuatf.html +1392 -0
- data/docs/Fox/FXRGBIcon.html +450 -0
- data/docs/Fox/FXRGBImage.html +434 -0
- data/docs/Fox/FXRadioButton.html +885 -0
- data/docs/Fox/FXRanged.html +1522 -0
- data/docs/Fox/FXRangef.html +1522 -0
- data/docs/Fox/FXRealSlider.html +1187 -0
- data/docs/Fox/FXRealSpinner.html +2175 -0
- data/docs/Fox/FXRecentFiles.html +841 -0
- data/docs/Fox/FXRectangle.html +802 -0
- data/docs/Fox/FXRegion.html +841 -0
- data/docs/Fox/FXRegistry.html +682 -0
- data/docs/Fox/FXReplaceDialog.html +648 -0
- data/docs/Fox/FXRootWindow.html +312 -0
- data/docs/Fox/FXRuler.html +2000 -0
- data/docs/Fox/FXRulerView.html +3997 -0
- data/docs/Fox/FXScintilla.html +49117 -0
- data/docs/Fox/FXScrollArea.html +1363 -0
- data/docs/Fox/FXScrollBar.html +1019 -0
- data/docs/Fox/FXScrollCorner.html +290 -0
- data/docs/Fox/FXScrollPane.html +499 -0
- data/docs/Fox/FXScrollWindow.html +409 -0
- data/docs/Fox/FXSearchDialog.html +382 -0
- data/docs/Fox/FXSegment.html +422 -0
- data/docs/Fox/FXSeparator.html +402 -0
- data/docs/Fox/FXSettings.html +1861 -0
- data/docs/Fox/FXShell.html +233 -0
- data/docs/Fox/FXShutter.html +472 -0
- data/docs/Fox/FXShutterItem.html +669 -0
- data/docs/Fox/FXSize.html +592 -0
- data/docs/Fox/FXSlider.html +1129 -0
- data/docs/Fox/FXSphered.html +906 -0
- data/docs/Fox/FXSpheref.html +906 -0
- data/docs/Fox/FXSpinner.html +2102 -0
- data/docs/Fox/FXSplashScreen.html +497 -0
- data/docs/Fox/FXSplashWindow.html +494 -0
- data/docs/Fox/FXSplitter.html +643 -0
- data/docs/Fox/FXSpring.html +517 -0
- data/docs/Fox/FXStatusBar.html +593 -0
- data/docs/Fox/FXStatusLine.html +754 -0
- data/docs/Fox/FXStream.html +1372 -0
- data/docs/Fox/FXStreamAllocError.html +148 -0
- data/docs/Fox/FXStreamEndError.html +148 -0
- data/docs/Fox/FXStreamError.html +259 -0
- data/docs/Fox/FXStreamFailureError.html +148 -0
- data/docs/Fox/FXStreamFormatError.html +148 -0
- data/docs/Fox/FXStreamFullError.html +148 -0
- data/docs/Fox/FXStreamNoReadError.html +148 -0
- data/docs/Fox/FXStreamNoWriteError.html +148 -0
- data/docs/Fox/FXStreamUnknownError.html +148 -0
- data/docs/Fox/FXStringDict.html +552 -0
- data/docs/Fox/FXSwitcher.html +619 -0
- data/docs/Fox/FXTGAIcon.html +450 -0
- data/docs/Fox/FXTGAImage.html +434 -0
- data/docs/Fox/FXTIFIcon.html +604 -0
- data/docs/Fox/FXTIFImage.html +588 -0
- data/docs/Fox/FXTabBar.html +644 -0
- data/docs/Fox/FXTabBook.html +373 -0
- data/docs/Fox/FXTabItem.html +478 -0
- data/docs/Fox/FXTable.html +10107 -0
- data/docs/Fox/FXTableItem.html +2195 -0
- data/docs/Fox/FXTablePos.html +360 -0
- data/docs/Fox/FXTableRange.html +360 -0
- data/docs/Fox/FXText.html +6870 -0
- data/docs/Fox/FXTextChange.html +492 -0
- data/docs/Fox/FXTextField.html +2016 -0
- data/docs/Fox/FXToggleButton.html +844 -0
- data/docs/Fox/FXToolBar.html +452 -0
- data/docs/Fox/FXToolBarGrip.html +584 -0
- data/docs/Fox/FXToolBarShell.html +788 -0
- data/docs/Fox/FXToolBarTab.html +729 -0
- data/docs/Fox/FXToolTip.html +761 -0
- data/docs/Fox/FXTopWindow.html +1716 -0
- data/docs/Fox/FXTranslator.html +481 -0
- data/docs/Fox/FXTreeItem.html +2813 -0
- data/docs/Fox/FXTreeList.html +5095 -0
- data/docs/Fox/FXTreeListBox.html +3080 -0
- data/docs/Fox/FXTriStateButton.html +681 -0
- data/docs/Fox/FXUndoList.html +2560 -0
- data/docs/Fox/FXVec2d.html +1450 -0
- data/docs/Fox/FXVec2f.html +1442 -0
- data/docs/Fox/FXVec3d.html +1649 -0
- data/docs/Fox/FXVec3f.html +1649 -0
- data/docs/Fox/FXVec4d.html +1858 -0
- data/docs/Fox/FXVec4f.html +1858 -0
- data/docs/Fox/FXVerticalFrame.html +359 -0
- data/docs/Fox/FXVerticalSeparator.html +349 -0
- data/docs/Fox/FXViewport.html +780 -0
- data/docs/Fox/FXVisual.html +1023 -0
- data/docs/Fox/FXWindow.html +9948 -0
- data/docs/Fox/FXWizard.html +1052 -0
- data/docs/Fox/FXXBMIcon.html +453 -0
- data/docs/Fox/FXXBMImage.html +437 -0
- data/docs/Fox/FXXPMIcon.html +450 -0
- data/docs/Fox/FXXPMImage.html +434 -0
- data/docs/Fox/NotifyHeader.html +286 -0
- data/docs/Fox/SCNotification.html +1438 -0
- data/docs/Fox/TextRange.html +281 -0
- data/docs/IRB.html +204 -0
- data/docs/Responder.html +693 -0
- data/docs/Responder2.html +225 -0
- data/docs/_index.html +2101 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +496 -0
- data/docs/file.History.html +869 -0
- data/docs/file.README.html +104 -0
- data/docs/file_list.html +66 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +614 -0
- data/docs/js/app.js +314 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +31043 -0
- data/docs/top-level-namespace.html +214 -0
- data/examples/canvasdemo.rb +5 -1
- data/examples/gltest.rb +162 -106
- data/examples/glviewer.rb +12 -8
- data/ext/fox16_c/extconf.rb +1 -1
- data/fxruby.gemspec +1 -1
- data/lib/fox16/canvas.rb +76 -45
- data/lib/fox16/glgroup.rb +5 -5
- data/lib/fox16/glshapes.rb +111 -99
- data/lib/fox16/version.rb +1 -1
- metadata +298 -4
data/examples/glviewer.rb
CHANGED
@@ -7,16 +7,15 @@ begin
|
|
7
7
|
rescue LoadError
|
8
8
|
require 'fox16/missingdep'
|
9
9
|
MSG = <<EOM
|
10
|
-
Sorry, this example depends on the
|
11
|
-
|
12
|
-
download site.
|
10
|
+
Sorry, this example depends on the opengl-bindings gems. Please execute:
|
11
|
+
gem install opengl-bindings
|
13
12
|
EOM
|
14
13
|
missingDependency(MSG)
|
15
14
|
end
|
16
15
|
|
17
|
-
|
16
|
+
class TabBook < Fox::FXTabBook
|
17
|
+
include Fox
|
18
18
|
|
19
|
-
class TabBook < FXTabBook
|
20
19
|
def createAnglesPage(panels, mdiclient)
|
21
20
|
# Angles tab
|
22
21
|
FXTabItem.new(panels,
|
@@ -143,8 +142,8 @@ class TabBook < FXTabBook
|
|
143
142
|
end
|
144
143
|
end
|
145
144
|
|
146
|
-
class GLViewWindow < FXMainWindow
|
147
|
-
|
145
|
+
class GLViewWindow < Fox::FXMainWindow
|
146
|
+
include Fox
|
148
147
|
include Responder
|
149
148
|
|
150
149
|
ID_QUERY_MODE = FXMainWindow::ID_LAST
|
@@ -162,6 +161,9 @@ class GLViewWindow < FXMainWindow
|
|
162
161
|
# Initialize base class first
|
163
162
|
super(app, "OpenGL Example Application", :opts => DECOR_ALL, :width => 800, :height => 600)
|
164
163
|
|
164
|
+
OpenGL.load_lib
|
165
|
+
GLU.load_lib
|
166
|
+
|
165
167
|
# Define message identifiers for this class
|
166
168
|
|
167
169
|
# Set up the message map
|
@@ -481,6 +483,8 @@ class GLViewWindow < FXMainWindow
|
|
481
483
|
sphere = FXGLSphere.new(1.0, 1.0, 0.0, 0.5)
|
482
484
|
sphere2 = FXGLSphere.new(0.0, 0.0, 0.0, 0.8)
|
483
485
|
sphere.tipText = "Sphere"
|
486
|
+
gp2.append(FXGLLine.new(-2.0, 0.0, 0.0, -1.0, 1.0, 1.0))
|
487
|
+
gp2.append(FXGLPoint.new(-2.0, 0.0, 0.0))
|
484
488
|
gp2.append(FXGLCube.new(-1.0, 0.0, 0.0, 1.0, 1.0, 1.0))
|
485
489
|
gp2.append(FXGLCube.new( 1.0, 0.0, 0.0, 1.0, 1.0, 1.0))
|
486
490
|
gp2.append(FXGLCube.new( 0.0,-1.0, 0.0, 1.0, 1.0, 1.0))
|
@@ -556,7 +560,7 @@ end
|
|
556
560
|
|
557
561
|
if __FILE__ == $0
|
558
562
|
# Make application
|
559
|
-
application = FXApp.new("GLViewer", "FoxTest")
|
563
|
+
application = Fox::FXApp.new("GLViewer", "FoxTest")
|
560
564
|
application.threadsEnabled = false
|
561
565
|
|
562
566
|
# Make window
|
data/ext/fox16_c/extconf.rb
CHANGED
@@ -30,7 +30,7 @@ LIBPNG_SOURCE_URI = "http://prdownloads.sourceforge.net/libpng/libpng-#{LIBPNG_V
|
|
30
30
|
# LIBJPEG_VERSION = ENV['LIBJPEG_VERSION'] || '9b'
|
31
31
|
# LIBJPEG_SOURCE_URI = "http://www.ijg.org/files/jpegsrc.v#{LIBJPEG_VERSION}.tar.gz"
|
32
32
|
|
33
|
-
LIBJPEG_VERSION = ENV['LIBJPEG_VERSION'] || '2.0.
|
33
|
+
LIBJPEG_VERSION = ENV['LIBJPEG_VERSION'] || '2.0.6'
|
34
34
|
LIBJPEG_SOURCE_URI = "https://downloads.sourceforge.net/libjpeg-turbo/libjpeg-turbo-#{LIBJPEG_VERSION}.tar.gz"
|
35
35
|
|
36
36
|
LIBTIFF_VERSION = ENV['LIBTIFF_VERSION'] || '4.1.0'
|
data/fxruby.gemspec
CHANGED
@@ -48,7 +48,7 @@ Gem::Specification.new do |spec|
|
|
48
48
|
spec.require_paths = ["lib"]
|
49
49
|
spec.extensions = ["ext/fox16_c/extconf.rb"]
|
50
50
|
spec.metadata['msys2_mingw_dependencies'] = 'fox'
|
51
|
-
spec.required_ruby_version = "
|
51
|
+
spec.required_ruby_version = [">= 2.2", "< 4"]
|
52
52
|
|
53
53
|
spec.add_runtime_dependency 'mini_portile2', '~> 2.1'
|
54
54
|
end
|
data/lib/fox16/canvas.rb
CHANGED
@@ -133,6 +133,13 @@ module Fox
|
|
133
133
|
# Default: make 6 control points
|
134
134
|
def makeControlPoints
|
135
135
|
end
|
136
|
+
|
137
|
+
protected def apply_dc(dc)
|
138
|
+
oldForeground = dc.foreground
|
139
|
+
dc.foreground = foreground
|
140
|
+
yield
|
141
|
+
dc.foreground = oldForeground
|
142
|
+
end
|
136
143
|
end
|
137
144
|
|
138
145
|
class ShapeGroup
|
@@ -191,29 +198,28 @@ module Fox
|
|
191
198
|
end
|
192
199
|
|
193
200
|
def draw(dc)
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
dc.foreground = oldForeground
|
201
|
+
apply_dc(dc) do
|
202
|
+
# Save old values
|
203
|
+
oldLineWidth = dc.lineWidth
|
204
|
+
oldLineCap = dc.lineCap
|
205
|
+
oldLineJoin = dc.lineJoin
|
206
|
+
oldLineStyle = dc.lineStyle
|
207
|
+
|
208
|
+
# Set properties for this line
|
209
|
+
dc.lineWidth = lineWidth
|
210
|
+
dc.lineCap = lineCap
|
211
|
+
dc.lineJoin = lineJoin
|
212
|
+
dc.lineStyle = lineStyle
|
213
|
+
|
214
|
+
# Draw the line
|
215
|
+
dc.drawLine(x1, y1, x2, y2)
|
216
|
+
|
217
|
+
# Restore old properties
|
218
|
+
dc.lineWidth = oldLineWidth
|
219
|
+
dc.lineCap = oldLineCap
|
220
|
+
dc.lineJoin = oldLineJoin
|
221
|
+
dc.lineStyle = oldLineStyle
|
222
|
+
end
|
217
223
|
end
|
218
224
|
end
|
219
225
|
|
@@ -228,31 +234,42 @@ module Fox
|
|
228
234
|
end
|
229
235
|
|
230
236
|
def draw(dc)
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
237
|
+
apply_dc(dc) do
|
238
|
+
dc.lineWidth = 5 if selected?
|
239
|
+
dc.drawRectangle(x, y, width, height)
|
240
|
+
end
|
235
241
|
end
|
236
242
|
end
|
237
243
|
|
238
|
-
class TextShape <
|
244
|
+
class TextShape < Shape
|
239
245
|
|
240
246
|
attr_reader :font, :text
|
247
|
+
attr_accessor :width, :height
|
241
248
|
|
242
249
|
def initialize(x, y, w, h, text=nil)
|
243
|
-
super(x, y
|
250
|
+
super(x, y)
|
251
|
+
@width = w
|
252
|
+
@height = h
|
244
253
|
@text = text
|
245
254
|
@font = FXApp.instance.normalFont
|
246
255
|
end
|
247
256
|
|
248
257
|
def draw(dc)
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
258
|
+
old_foreground = dc.foreground
|
259
|
+
apply_dc(dc) do
|
260
|
+
if selected?
|
261
|
+
dc.lineWidth = 5
|
262
|
+
dc.drawRectangle(x - 3, y - 3, width + 6, height + 6)
|
263
|
+
end
|
264
|
+
|
265
|
+
old_background = dc.background
|
266
|
+
dc.background = old_foreground
|
267
|
+
oldTextFont = dc.font
|
268
|
+
dc.font = @font
|
269
|
+
dc.drawImageText(x, y + height, text)
|
270
|
+
dc.font = oldTextFont if oldTextFont
|
271
|
+
dc.background = old_foreground
|
272
|
+
end
|
256
273
|
end
|
257
274
|
end
|
258
275
|
|
@@ -274,14 +291,13 @@ module Fox
|
|
274
291
|
end
|
275
292
|
|
276
293
|
def draw(dc)
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
dc.lineWidth = oldLineWidth
|
294
|
+
apply_dc(dc) do
|
295
|
+
oldLineWidth = dc.lineWidth
|
296
|
+
dc.lineWidth = 5 if selected?
|
297
|
+
dc.drawArc(x, y, width, height, 0, 64*180)
|
298
|
+
dc.drawArc(x, y, width, height, 64*180, 64*360)
|
299
|
+
dc.lineWidth = oldLineWidth
|
300
|
+
end
|
285
301
|
end
|
286
302
|
end
|
287
303
|
|
@@ -293,11 +309,26 @@ module Fox
|
|
293
309
|
attr_accessor :image
|
294
310
|
|
295
311
|
def initialize(x, y, image)
|
312
|
+
super(x, y)
|
296
313
|
@image = image
|
297
314
|
end
|
298
315
|
|
316
|
+
def width
|
317
|
+
@image.width
|
318
|
+
end
|
319
|
+
|
320
|
+
def height
|
321
|
+
@image.height
|
322
|
+
end
|
323
|
+
|
299
324
|
def draw(dc)
|
300
|
-
dc
|
325
|
+
apply_dc(dc) do
|
326
|
+
if selected?
|
327
|
+
dc.lineWidth = 5
|
328
|
+
dc.drawRectangle(x - 3, y - 3, width + 5, height + 5)
|
329
|
+
end
|
330
|
+
dc.drawImage(image, x, y)
|
331
|
+
end
|
301
332
|
end
|
302
333
|
end
|
303
334
|
|
data/lib/fox16/glgroup.rb
CHANGED
@@ -9,7 +9,7 @@ module Fox
|
|
9
9
|
# A group of OpenGL objects
|
10
10
|
#
|
11
11
|
class FXGLGroup < FXGLObject
|
12
|
-
|
12
|
+
include OpenGL if defined?(OpenGL)
|
13
13
|
include Enumerable
|
14
14
|
|
15
15
|
FLT_MAX = 1.0e+20
|
@@ -80,12 +80,12 @@ module Fox
|
|
80
80
|
#
|
81
81
|
def hit(viewer)
|
82
82
|
# GL.PushName(0xffffffff)
|
83
|
-
|
83
|
+
glPushName(1000000)
|
84
84
|
@list.each_with_index do |obj, i|
|
85
|
-
|
86
|
-
|
85
|
+
glLoadName(i)
|
86
|
+
obj.hit(viewer)
|
87
87
|
end
|
88
|
-
|
88
|
+
glPopName
|
89
89
|
end
|
90
90
|
|
91
91
|
#
|
data/lib/fox16/glshapes.rb
CHANGED
@@ -9,6 +9,7 @@ module Fox
|
|
9
9
|
# OpenGL point object
|
10
10
|
#
|
11
11
|
class FXGLPoint < FXGLObject
|
12
|
+
include OpenGL
|
12
13
|
|
13
14
|
# Point position, in model coordinates (a 3-element array)
|
14
15
|
attr_accessor :pos
|
@@ -47,20 +48,20 @@ module Fox
|
|
47
48
|
# Draw this point into _viewer_ (an FXGLViewer instance).
|
48
49
|
#
|
49
50
|
def draw(viewer)
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
51
|
+
glColor3d(0.0, 0.0, 1.0)
|
52
|
+
glPointSize(HANDLE_SIZE)
|
53
|
+
glBegin(GL_POINTS)
|
54
|
+
glVertex3d(*@pos)
|
55
|
+
glEnd()
|
55
56
|
end
|
56
57
|
|
57
58
|
#
|
58
59
|
# Perform hit test for this point in _viewer_ (an FXGLViewer instance).
|
59
60
|
#
|
60
61
|
def hit(viewer)
|
61
|
-
|
62
|
-
|
63
|
-
|
62
|
+
glBegin(GL_POINTS)
|
63
|
+
glVertex3d(*@pos)
|
64
|
+
glEnd()
|
64
65
|
end
|
65
66
|
end
|
66
67
|
|
@@ -68,6 +69,7 @@ module Fox
|
|
68
69
|
# OpenGL line object
|
69
70
|
#
|
70
71
|
class FXGLLine < FXGLObject
|
72
|
+
include OpenGL
|
71
73
|
|
72
74
|
# Starting point for line [FXGLPoint]
|
73
75
|
attr_accessor :fm
|
@@ -93,14 +95,14 @@ module Fox
|
|
93
95
|
def initialize(*args)
|
94
96
|
super()
|
95
97
|
if args.length == 0
|
96
|
-
|
97
|
-
|
98
|
+
@fm = FXGLPoint.new(-0.5, 0.0, 0.0)
|
99
|
+
@to = FXGLPoint.new( 0.5, 0.0, 0.0)
|
98
100
|
elsif args.length == 1
|
99
|
-
|
100
|
-
|
101
|
+
@fm = args[0].fm
|
102
|
+
@to = args[0].to
|
101
103
|
else
|
102
|
-
|
103
|
-
|
104
|
+
@fm = FXGLPoint.new(args[0], args[1], args[2])
|
105
|
+
@to = FXGLPoint.new(args[3], args[4], args[5])
|
104
106
|
end
|
105
107
|
end
|
106
108
|
|
@@ -120,22 +122,22 @@ module Fox
|
|
120
122
|
# Draw this line into _viewer_ (an FXGLViewer instance).
|
121
123
|
#
|
122
124
|
def draw(viewer)
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
125
|
+
glColor3d(1.0, 0.0, 0.0)
|
126
|
+
glPointSize(HANDLE_SIZE)
|
127
|
+
glBegin(GL_LINES)
|
128
|
+
glVertex3d(*@fm.pos)
|
129
|
+
glVertex3d(*@to.pos)
|
130
|
+
glEnd()
|
129
131
|
end
|
130
132
|
|
131
133
|
#
|
132
134
|
# Perform hit-test for this line in _viewer_ (an FXGLViewer instance).
|
133
135
|
#
|
134
136
|
def hit(viewer)
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
137
|
+
glBegin(GL_LINES)
|
138
|
+
glVertex3d(*@fm.pos)
|
139
|
+
glVertex3d(*@to.pos)
|
140
|
+
glEnd()
|
139
141
|
end
|
140
142
|
end
|
141
143
|
|
@@ -143,6 +145,7 @@ module Fox
|
|
143
145
|
# OpenGL cube object
|
144
146
|
#
|
145
147
|
class FXGLCube < FXGLShape
|
148
|
+
include OpenGL
|
146
149
|
|
147
150
|
# Cube width [Float]
|
148
151
|
attr_accessor :width
|
@@ -173,17 +176,17 @@ module Fox
|
|
173
176
|
#
|
174
177
|
def initialize(*args)
|
175
178
|
if args.length == 7
|
176
|
-
|
179
|
+
super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE,
|
177
180
|
args[6], args[6])
|
178
181
|
else
|
179
|
-
|
182
|
+
super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE)
|
180
183
|
end
|
181
184
|
@width = args[3] ? args[3] : 1.0
|
182
185
|
@height = args[4] ? args[4] : 1.0
|
183
186
|
@depth = args[5] ? args[5] : 1.0
|
184
187
|
setRange(FXRangef.new(-0.5*@width, 0.5*@width,
|
185
|
-
|
186
|
-
|
188
|
+
-0.5*@height, 0.5*@height,
|
189
|
+
-0.5*@depth, 0.5*@depth))
|
187
190
|
end
|
188
191
|
|
189
192
|
#
|
@@ -195,58 +198,58 @@ module Fox
|
|
195
198
|
zmin, zmax = -0.5*@depth, 0.5*@depth
|
196
199
|
|
197
200
|
# Draw low face
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
201
|
+
glBegin(GL_TRIANGLE_STRIP)
|
202
|
+
glNormal3d(0.0, 0.0, -1.0)
|
203
|
+
glVertex3d(xmin, ymin, zmin)
|
204
|
+
glVertex3d(xmin, ymax, zmin)
|
205
|
+
glVertex3d(xmax, ymin, zmin)
|
206
|
+
glVertex3d(xmax, ymax, zmin)
|
207
|
+
glEnd()
|
205
208
|
|
206
209
|
# Draw east face
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
210
|
+
glBegin(GL_TRIANGLE_STRIP)
|
211
|
+
glNormal3d(1.0, 0.0, 0.0)
|
212
|
+
glVertex3d(xmax, ymin, zmin)
|
213
|
+
glVertex3d(xmax, ymax, zmin)
|
214
|
+
glVertex3d(xmax, ymin, zmax)
|
215
|
+
glVertex3d(xmax, ymax, zmax)
|
216
|
+
glEnd()
|
214
217
|
|
215
218
|
# Draw high face
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
219
|
+
glBegin(GL_TRIANGLE_STRIP)
|
220
|
+
glNormal3d(0.0, 0.0, 1.0)
|
221
|
+
glVertex3d(xmax, ymin, zmax)
|
222
|
+
glVertex3d(xmax, ymax, zmax)
|
223
|
+
glVertex3d(xmin, ymin, zmax)
|
224
|
+
glVertex3d(xmin, ymax, zmax)
|
225
|
+
glEnd()
|
223
226
|
|
224
227
|
# Draw west face
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
228
|
+
glBegin(GL_TRIANGLE_STRIP)
|
229
|
+
glNormal3d(-1.0, 0.0, 0.0)
|
230
|
+
glVertex3d(xmin, ymin, zmax)
|
231
|
+
glVertex3d(xmin, ymax, zmax)
|
232
|
+
glVertex3d(xmin, ymin, zmin)
|
233
|
+
glVertex3d(xmin, ymax, zmin)
|
234
|
+
glEnd()
|
232
235
|
|
233
236
|
# Draw north face
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
237
|
+
glBegin(GL_TRIANGLE_STRIP)
|
238
|
+
glNormal3d(0.0, 1.0, 0.0)
|
239
|
+
glVertex3d(xmin, ymax, zmin)
|
240
|
+
glVertex3d(xmin, ymax, zmax)
|
241
|
+
glVertex3d(xmax, ymax, zmin)
|
242
|
+
glVertex3d(xmax, ymax, zmax)
|
243
|
+
glEnd()
|
241
244
|
|
242
245
|
# Draw south face
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
246
|
+
glBegin(GL_TRIANGLE_STRIP)
|
247
|
+
glNormal3d(0.0, -1.0, 0.0)
|
248
|
+
glVertex3d(xmin, ymin, zmax)
|
249
|
+
glVertex3d(xmin, ymin, zmin)
|
250
|
+
glVertex3d(xmax, ymin, zmax)
|
251
|
+
glVertex3d(xmax, ymin, zmin)
|
252
|
+
glEnd()
|
250
253
|
end
|
251
254
|
end
|
252
255
|
|
@@ -254,6 +257,9 @@ module Fox
|
|
254
257
|
# OpenGL cone object
|
255
258
|
#
|
256
259
|
class FXGLCone < FXGLShape
|
260
|
+
include OpenGL
|
261
|
+
include GLU
|
262
|
+
|
257
263
|
# Cone fidelity
|
258
264
|
SLICES_NUMBER = 20
|
259
265
|
STACKS_NUMBER = 20
|
@@ -293,9 +299,9 @@ module Fox
|
|
293
299
|
#
|
294
300
|
def initialize(*args)
|
295
301
|
if args.length == 5
|
296
|
-
|
302
|
+
super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE)
|
297
303
|
elsif args.length == 6
|
298
|
-
|
304
|
+
super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE,
|
299
305
|
args[5], args[5])
|
300
306
|
end
|
301
307
|
@height = args[3] ? args[3] : 1.0
|
@@ -310,15 +316,15 @@ module Fox
|
|
310
316
|
# Draw this cone into _viewer_ (an FXGLViewer instance).
|
311
317
|
#
|
312
318
|
def drawshape(viewer)
|
313
|
-
quad =
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
319
|
+
quad = gluNewQuadric()
|
320
|
+
gluQuadricDrawStyle(quad, GLU_FILL)
|
321
|
+
glPushMatrix()
|
322
|
+
glRotated(-90, 1, 0, 0)
|
323
|
+
gluCylinder(quad, @radius, 0, @height, @slices, @stacks)
|
324
|
+
gluQuadricOrientation(quad, GLU_INSIDE)
|
325
|
+
gluDisk(quad, 0, @radius, @slices, @loops)
|
326
|
+
gluDeleteQuadric(quad)
|
327
|
+
glPopMatrix()
|
322
328
|
end
|
323
329
|
end
|
324
330
|
|
@@ -326,6 +332,9 @@ module Fox
|
|
326
332
|
# OpenGL cylinder object
|
327
333
|
#
|
328
334
|
class FXGLCylinder < FXGLShape
|
335
|
+
include OpenGL
|
336
|
+
include GLU
|
337
|
+
|
329
338
|
# Cylinder fidelity
|
330
339
|
SLICES_NUMBER = 20
|
331
340
|
STACKS_NUMBER = 20
|
@@ -365,9 +374,9 @@ module Fox
|
|
365
374
|
#
|
366
375
|
def initialize(*args)
|
367
376
|
if args.length == 5
|
368
|
-
|
377
|
+
super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE)
|
369
378
|
else
|
370
|
-
|
379
|
+
super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE,
|
371
380
|
args[5], args[5])
|
372
381
|
end
|
373
382
|
@height = args[3] ? args[3] : 1.0
|
@@ -382,18 +391,18 @@ module Fox
|
|
382
391
|
# Draw this cylinder into _viewer_ (an FXGLViewer instance).
|
383
392
|
#
|
384
393
|
def drawshape(viewer)
|
385
|
-
quad =
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
394
|
+
quad = gluNewQuadric()
|
395
|
+
gluQuadricDrawStyle(quad, GLU_FILL)
|
396
|
+
glPushMatrix()
|
397
|
+
glRotated(-90, 1, 0, 0)
|
398
|
+
gluCylinder(quad, @radius, @radius, @height, @slices, @stacks)
|
399
|
+
gluQuadricOrientation(quad, GLU_INSIDE)
|
400
|
+
gluDisk(quad, 0, @radius, @slices, @loops)
|
401
|
+
glTranslated(0, 0, @height)
|
402
|
+
gluQuadricOrientation(quad, GLU_OUTSIDE)
|
403
|
+
gluDisk(quad, 0, @radius, @slices, @loops)
|
404
|
+
glPopMatrix()
|
405
|
+
gluDeleteQuadric(quad)
|
397
406
|
end
|
398
407
|
end
|
399
408
|
|
@@ -401,6 +410,9 @@ module Fox
|
|
401
410
|
# OpenGL sphere object
|
402
411
|
#
|
403
412
|
class FXGLSphere < FXGLShape
|
413
|
+
include OpenGL
|
414
|
+
include GLU
|
415
|
+
|
404
416
|
# Sphere fidelity
|
405
417
|
SLICES_NUMBER = 20
|
406
418
|
STACKS_NUMBER = 20
|
@@ -448,10 +460,10 @@ module Fox
|
|
448
460
|
# Draw this sphere into _viewer_ (an FXGLViewer instance).
|
449
461
|
#
|
450
462
|
def drawshape(viewer)
|
451
|
-
quad =
|
452
|
-
|
453
|
-
|
454
|
-
|
463
|
+
quad = gluNewQuadric()
|
464
|
+
gluQuadricDrawStyle(quad, GLU_FILL)
|
465
|
+
gluSphere(quad, @radius, @slices, @stacks)
|
466
|
+
gluDeleteQuadric(quad)
|
455
467
|
end
|
456
468
|
end
|
457
469
|
end
|