fxruby 1.6.42-x86-mingw32 → 1.6.43-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/.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 +293 -2
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
|