fxruby 1.6.42 → 1.6.43

Sign up to get free protection for your applications and to get access to all the features.
Files changed (309) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/.yardopts +1 -1
  4. data/Gemfile +1 -2
  5. data/History.md +11 -0
  6. data/README.rdoc +4 -4
  7. data/Rakefile +10 -0
  8. data/appveyor.yml +4 -0
  9. data/docs/Fox.html +11184 -0
  10. data/docs/Fox/Canvas.html +141 -0
  11. data/docs/Fox/Canvas/CanvasError.html +124 -0
  12. data/docs/Fox/Canvas/CircleShape.html +477 -0
  13. data/docs/Fox/Canvas/ImageShape.html +477 -0
  14. data/docs/Fox/Canvas/LineShape.html +1005 -0
  15. data/docs/Fox/Canvas/PolygonShape.html +145 -0
  16. data/docs/Fox/Canvas/RectangleShape.html +439 -0
  17. data/docs/Fox/Canvas/SelectionPolicy.html +352 -0
  18. data/docs/Fox/Canvas/Shape.html +1955 -0
  19. data/docs/Fox/Canvas/ShapeCanvas.html +2031 -0
  20. data/docs/Fox/Canvas/ShapeGroup.html +527 -0
  21. data/docs/Fox/Canvas/SingleSelectionPolicy.html +291 -0
  22. data/docs/Fox/Canvas/TextShape.html +609 -0
  23. data/docs/Fox/FTNonModal.html +550 -0
  24. data/docs/Fox/FX4Splitter.html +1336 -0
  25. data/docs/Fox/FX7Segment.html +1010 -0
  26. data/docs/Fox/FXAccelTable.html +715 -0
  27. data/docs/Fox/FXApp.html +7998 -0
  28. data/docs/Fox/FXArc.html +562 -0
  29. data/docs/Fox/FXArrowButton.html +865 -0
  30. data/docs/Fox/FXBMPIcon.html +450 -0
  31. data/docs/Fox/FXBMPImage.html +434 -0
  32. data/docs/Fox/FXBitmap.html +1362 -0
  33. data/docs/Fox/FXBitmapFrame.html +595 -0
  34. data/docs/Fox/FXBitmapView.html +1451 -0
  35. data/docs/Fox/FXButton.html +534 -0
  36. data/docs/Fox/FXCURCursor.html +261 -0
  37. data/docs/Fox/FXCalendar.html +880 -0
  38. data/docs/Fox/FXCanvas.html +311 -0
  39. data/docs/Fox/FXCheckButton.html +949 -0
  40. data/docs/Fox/FXChoiceBox.html +472 -0
  41. data/docs/Fox/FXColor.html +1519 -0
  42. data/docs/Fox/FXColorBar.html +759 -0
  43. data/docs/Fox/FXColorDialog.html +591 -0
  44. data/docs/Fox/FXColorItem.html +323 -0
  45. data/docs/Fox/FXColorList.html +712 -0
  46. data/docs/Fox/FXColorRing.html +817 -0
  47. data/docs/Fox/FXColorSelector.html +796 -0
  48. data/docs/Fox/FXColorWell.html +850 -0
  49. data/docs/Fox/FXColorWheel.html +770 -0
  50. data/docs/Fox/FXComboBox.html +2939 -0
  51. data/docs/Fox/FXComboTableItem.html +544 -0
  52. data/docs/Fox/FXCommand.html +526 -0
  53. data/docs/Fox/FXComposite.html +433 -0
  54. data/docs/Fox/FXCursor.html +779 -0
  55. data/docs/Fox/FXDC.html +5231 -0
  56. data/docs/Fox/FXDCPrint.html +696 -0
  57. data/docs/Fox/FXDCWindow.html +358 -0
  58. data/docs/Fox/FXDataTarget.html +573 -0
  59. data/docs/Fox/FXDebugTarget.html +305 -0
  60. data/docs/Fox/FXDelegator.html +305 -0
  61. data/docs/Fox/FXDial.html +1133 -0
  62. data/docs/Fox/FXDialogBox.html +413 -0
  63. data/docs/Fox/FXDict.html +1063 -0
  64. data/docs/Fox/FXDirBox.html +752 -0
  65. data/docs/Fox/FXDirDialog.html +914 -0
  66. data/docs/Fox/FXDirItem.html +989 -0
  67. data/docs/Fox/FXDirList.html +1554 -0
  68. data/docs/Fox/FXDirSelector.html +995 -0
  69. data/docs/Fox/FXDockBar.html +1451 -0
  70. data/docs/Fox/FXDockHandler.html +468 -0
  71. data/docs/Fox/FXDockSite.html +678 -0
  72. data/docs/Fox/FXDockTitle.html +606 -0
  73. data/docs/Fox/FXDocument.html +536 -0
  74. data/docs/Fox/FXDragCorner.html +440 -0
  75. data/docs/Fox/FXDrawable.html +478 -0
  76. data/docs/Fox/FXDriveBox.html +746 -0
  77. data/docs/Fox/FXEvent.html +1736 -0
  78. data/docs/Fox/FXExtentd.html +1374 -0
  79. data/docs/Fox/FXExtentf.html +1374 -0
  80. data/docs/Fox/FXFileAssoc.html +850 -0
  81. data/docs/Fox/FXFileDialog.html +2688 -0
  82. data/docs/Fox/FXFileDict.html +1058 -0
  83. data/docs/Fox/FXFileItem.html +1141 -0
  84. data/docs/Fox/FXFileList.html +2259 -0
  85. data/docs/Fox/FXFileSelector.html +2529 -0
  86. data/docs/Fox/FXFileStream.html +503 -0
  87. data/docs/Fox/FXFoldingItem.html +2822 -0
  88. data/docs/Fox/FXFoldingList.html +5189 -0
  89. data/docs/Fox/FXFont.html +2998 -0
  90. data/docs/Fox/FXFontDesc.html +710 -0
  91. data/docs/Fox/FXFontDialog.html +420 -0
  92. data/docs/Fox/FXFontSelector.html +576 -0
  93. data/docs/Fox/FXFrame.html +1012 -0
  94. data/docs/Fox/FXGIFCursor.html +337 -0
  95. data/docs/Fox/FXGIFIcon.html +450 -0
  96. data/docs/Fox/FXGIFImage.html +434 -0
  97. data/docs/Fox/FXGLCanvas.html +700 -0
  98. data/docs/Fox/FXGLCone.html +785 -0
  99. data/docs/Fox/FXGLContext.html +649 -0
  100. data/docs/Fox/FXGLCube.html +703 -0
  101. data/docs/Fox/FXGLCylinder.html +791 -0
  102. data/docs/Fox/FXGLGroup.html +1385 -0
  103. data/docs/Fox/FXGLLine.html +653 -0
  104. data/docs/Fox/FXGLObject.html +759 -0
  105. data/docs/Fox/FXGLPoint.html +561 -0
  106. data/docs/Fox/FXGLShape.html +714 -0
  107. data/docs/Fox/FXGLSphere.html +626 -0
  108. data/docs/Fox/FXGLViewer.html +3506 -0
  109. data/docs/Fox/FXGLVisual.html +2147 -0
  110. data/docs/Fox/FXGradient.html +562 -0
  111. data/docs/Fox/FXGradientBar.html +2479 -0
  112. data/docs/Fox/FXGroupBox.html +688 -0
  113. data/docs/Fox/FXHeader.html +3040 -0
  114. data/docs/Fox/FXHeaderItem.html +1353 -0
  115. data/docs/Fox/FXHiliteStyle.html +804 -0
  116. data/docs/Fox/FXHorizontalFrame.html +359 -0
  117. data/docs/Fox/FXHorizontalSeparator.html +349 -0
  118. data/docs/Fox/FXICOIcon.html +450 -0
  119. data/docs/Fox/FXICOImage.html +434 -0
  120. data/docs/Fox/FXIcon.html +384 -0
  121. data/docs/Fox/FXIconDict.html +752 -0
  122. data/docs/Fox/FXIconItem.html +1518 -0
  123. data/docs/Fox/FXIconList.html +4676 -0
  124. data/docs/Fox/FXIconSource.html +963 -0
  125. data/docs/Fox/FXId.html +712 -0
  126. data/docs/Fox/FXImage.html +2328 -0
  127. data/docs/Fox/FXImageFrame.html +489 -0
  128. data/docs/Fox/FXImageView.html +504 -0
  129. data/docs/Fox/FXInputDialog.html +894 -0
  130. data/docs/Fox/FXIrb.html +942 -0
  131. data/docs/Fox/FXJPGIcon.html +607 -0
  132. data/docs/Fox/FXJPGImage.html +591 -0
  133. data/docs/Fox/FXKnob.html +1048 -0
  134. data/docs/Fox/FXLabel.html +1013 -0
  135. data/docs/Fox/FXLight.html +920 -0
  136. data/docs/Fox/FXList.html +3717 -0
  137. data/docs/Fox/FXListBox.html +2518 -0
  138. data/docs/Fox/FXListItem.html +1459 -0
  139. data/docs/Fox/FXMDIChild.html +2175 -0
  140. data/docs/Fox/FXMDIClient.html +781 -0
  141. data/docs/Fox/FXMDIDeleteButton.html +334 -0
  142. data/docs/Fox/FXMDIMaximizeButton.html +334 -0
  143. data/docs/Fox/FXMDIMenu.html +335 -0
  144. data/docs/Fox/FXMDIMinimizeButton.html +334 -0
  145. data/docs/Fox/FXMDIRestoreButton.html +334 -0
  146. data/docs/Fox/FXMDIWindowButton.html +334 -0
  147. data/docs/Fox/FXMainWindow.html +337 -0
  148. data/docs/Fox/FXMaterial.html +570 -0
  149. data/docs/Fox/FXMatrix.html +734 -0
  150. data/docs/Fox/FXMemoryBuffer.html +472 -0
  151. data/docs/Fox/FXMemoryStream.html +632 -0
  152. data/docs/Fox/FXMenuBar.html +347 -0
  153. data/docs/Fox/FXMenuButton.html +829 -0
  154. data/docs/Fox/FXMenuCaption.html +1080 -0
  155. data/docs/Fox/FXMenuCascade.html +388 -0
  156. data/docs/Fox/FXMenuCheck.html +721 -0
  157. data/docs/Fox/FXMenuCommand.html +400 -0
  158. data/docs/Fox/FXMenuPane.html +333 -0
  159. data/docs/Fox/FXMenuRadio.html +721 -0
  160. data/docs/Fox/FXMenuSeparator.html +440 -0
  161. data/docs/Fox/FXMenuTitle.html +405 -0
  162. data/docs/Fox/FXMessageBox.html +658 -0
  163. data/docs/Fox/FXObject.html +545 -0
  164. data/docs/Fox/FXOption.html +491 -0
  165. data/docs/Fox/FXOptionMenu.html +885 -0
  166. data/docs/Fox/FXPCXIcon.html +450 -0
  167. data/docs/Fox/FXPCXImage.html +434 -0
  168. data/docs/Fox/FXPNGIcon.html +524 -0
  169. data/docs/Fox/FXPNGImage.html +508 -0
  170. data/docs/Fox/FXPPMIcon.html +450 -0
  171. data/docs/Fox/FXPPMImage.html +373 -0
  172. data/docs/Fox/FXPSBounds.html +500 -0
  173. data/docs/Fox/FXPacker.html +1229 -0
  174. data/docs/Fox/FXPicker.html +345 -0
  175. data/docs/Fox/FXPopup.html +1099 -0
  176. data/docs/Fox/FXPrintDialog.html +485 -0
  177. data/docs/Fox/FXPrinter.html +1330 -0
  178. data/docs/Fox/FXProgressBar.html +1150 -0
  179. data/docs/Fox/FXProgressDialog.html +715 -0
  180. data/docs/Fox/FXPseudoKeyboard.html +428 -0
  181. data/docs/Fox/FXPseudoMouse.html +800 -0
  182. data/docs/Fox/FXPseudoTarget.html +472 -0
  183. data/docs/Fox/FXQuatd.html +1377 -0
  184. data/docs/Fox/FXQuatf.html +1392 -0
  185. data/docs/Fox/FXRGBIcon.html +450 -0
  186. data/docs/Fox/FXRGBImage.html +434 -0
  187. data/docs/Fox/FXRadioButton.html +885 -0
  188. data/docs/Fox/FXRanged.html +1522 -0
  189. data/docs/Fox/FXRangef.html +1522 -0
  190. data/docs/Fox/FXRealSlider.html +1187 -0
  191. data/docs/Fox/FXRealSpinner.html +2175 -0
  192. data/docs/Fox/FXRecentFiles.html +841 -0
  193. data/docs/Fox/FXRectangle.html +802 -0
  194. data/docs/Fox/FXRegion.html +841 -0
  195. data/docs/Fox/FXRegistry.html +682 -0
  196. data/docs/Fox/FXReplaceDialog.html +648 -0
  197. data/docs/Fox/FXRootWindow.html +312 -0
  198. data/docs/Fox/FXRuler.html +2000 -0
  199. data/docs/Fox/FXRulerView.html +3997 -0
  200. data/docs/Fox/FXScintilla.html +49117 -0
  201. data/docs/Fox/FXScrollArea.html +1363 -0
  202. data/docs/Fox/FXScrollBar.html +1019 -0
  203. data/docs/Fox/FXScrollCorner.html +290 -0
  204. data/docs/Fox/FXScrollPane.html +499 -0
  205. data/docs/Fox/FXScrollWindow.html +409 -0
  206. data/docs/Fox/FXSearchDialog.html +382 -0
  207. data/docs/Fox/FXSegment.html +422 -0
  208. data/docs/Fox/FXSeparator.html +402 -0
  209. data/docs/Fox/FXSettings.html +1861 -0
  210. data/docs/Fox/FXShell.html +233 -0
  211. data/docs/Fox/FXShutter.html +472 -0
  212. data/docs/Fox/FXShutterItem.html +669 -0
  213. data/docs/Fox/FXSize.html +592 -0
  214. data/docs/Fox/FXSlider.html +1129 -0
  215. data/docs/Fox/FXSphered.html +906 -0
  216. data/docs/Fox/FXSpheref.html +906 -0
  217. data/docs/Fox/FXSpinner.html +2102 -0
  218. data/docs/Fox/FXSplashScreen.html +497 -0
  219. data/docs/Fox/FXSplashWindow.html +494 -0
  220. data/docs/Fox/FXSplitter.html +643 -0
  221. data/docs/Fox/FXSpring.html +517 -0
  222. data/docs/Fox/FXStatusBar.html +593 -0
  223. data/docs/Fox/FXStatusLine.html +754 -0
  224. data/docs/Fox/FXStream.html +1372 -0
  225. data/docs/Fox/FXStreamAllocError.html +148 -0
  226. data/docs/Fox/FXStreamEndError.html +148 -0
  227. data/docs/Fox/FXStreamError.html +259 -0
  228. data/docs/Fox/FXStreamFailureError.html +148 -0
  229. data/docs/Fox/FXStreamFormatError.html +148 -0
  230. data/docs/Fox/FXStreamFullError.html +148 -0
  231. data/docs/Fox/FXStreamNoReadError.html +148 -0
  232. data/docs/Fox/FXStreamNoWriteError.html +148 -0
  233. data/docs/Fox/FXStreamUnknownError.html +148 -0
  234. data/docs/Fox/FXStringDict.html +552 -0
  235. data/docs/Fox/FXSwitcher.html +619 -0
  236. data/docs/Fox/FXTGAIcon.html +450 -0
  237. data/docs/Fox/FXTGAImage.html +434 -0
  238. data/docs/Fox/FXTIFIcon.html +604 -0
  239. data/docs/Fox/FXTIFImage.html +588 -0
  240. data/docs/Fox/FXTabBar.html +644 -0
  241. data/docs/Fox/FXTabBook.html +373 -0
  242. data/docs/Fox/FXTabItem.html +478 -0
  243. data/docs/Fox/FXTable.html +10107 -0
  244. data/docs/Fox/FXTableItem.html +2195 -0
  245. data/docs/Fox/FXTablePos.html +360 -0
  246. data/docs/Fox/FXTableRange.html +360 -0
  247. data/docs/Fox/FXText.html +6870 -0
  248. data/docs/Fox/FXTextChange.html +492 -0
  249. data/docs/Fox/FXTextField.html +2016 -0
  250. data/docs/Fox/FXToggleButton.html +844 -0
  251. data/docs/Fox/FXToolBar.html +452 -0
  252. data/docs/Fox/FXToolBarGrip.html +584 -0
  253. data/docs/Fox/FXToolBarShell.html +788 -0
  254. data/docs/Fox/FXToolBarTab.html +729 -0
  255. data/docs/Fox/FXToolTip.html +761 -0
  256. data/docs/Fox/FXTopWindow.html +1716 -0
  257. data/docs/Fox/FXTranslator.html +481 -0
  258. data/docs/Fox/FXTreeItem.html +2813 -0
  259. data/docs/Fox/FXTreeList.html +5095 -0
  260. data/docs/Fox/FXTreeListBox.html +3080 -0
  261. data/docs/Fox/FXTriStateButton.html +681 -0
  262. data/docs/Fox/FXUndoList.html +2560 -0
  263. data/docs/Fox/FXVec2d.html +1450 -0
  264. data/docs/Fox/FXVec2f.html +1442 -0
  265. data/docs/Fox/FXVec3d.html +1649 -0
  266. data/docs/Fox/FXVec3f.html +1649 -0
  267. data/docs/Fox/FXVec4d.html +1858 -0
  268. data/docs/Fox/FXVec4f.html +1858 -0
  269. data/docs/Fox/FXVerticalFrame.html +359 -0
  270. data/docs/Fox/FXVerticalSeparator.html +349 -0
  271. data/docs/Fox/FXViewport.html +780 -0
  272. data/docs/Fox/FXVisual.html +1023 -0
  273. data/docs/Fox/FXWindow.html +9948 -0
  274. data/docs/Fox/FXWizard.html +1052 -0
  275. data/docs/Fox/FXXBMIcon.html +453 -0
  276. data/docs/Fox/FXXBMImage.html +437 -0
  277. data/docs/Fox/FXXPMIcon.html +450 -0
  278. data/docs/Fox/FXXPMImage.html +434 -0
  279. data/docs/Fox/NotifyHeader.html +286 -0
  280. data/docs/Fox/SCNotification.html +1438 -0
  281. data/docs/Fox/TextRange.html +281 -0
  282. data/docs/IRB.html +204 -0
  283. data/docs/Responder.html +693 -0
  284. data/docs/Responder2.html +225 -0
  285. data/docs/_index.html +2101 -0
  286. data/docs/class_list.html +51 -0
  287. data/docs/css/common.css +1 -0
  288. data/docs/css/full_list.css +58 -0
  289. data/docs/css/style.css +496 -0
  290. data/docs/file.History.html +869 -0
  291. data/docs/file.README.html +104 -0
  292. data/docs/file_list.html +66 -0
  293. data/docs/frames.html +17 -0
  294. data/docs/index.html +614 -0
  295. data/docs/js/app.js +314 -0
  296. data/docs/js/full_list.js +216 -0
  297. data/docs/js/jquery.js +4 -0
  298. data/docs/method_list.html +31043 -0
  299. data/docs/top-level-namespace.html +214 -0
  300. data/examples/canvasdemo.rb +5 -1
  301. data/examples/gltest.rb +162 -106
  302. data/examples/glviewer.rb +12 -8
  303. data/ext/fox16_c/extconf.rb +1 -1
  304. data/fxruby.gemspec +1 -1
  305. data/lib/fox16/canvas.rb +76 -45
  306. data/lib/fox16/glgroup.rb +5 -5
  307. data/lib/fox16/glshapes.rb +111 -99
  308. data/lib/fox16/version.rb +1 -1
  309. metadata +298 -4
@@ -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 OpenGL extension. Please
11
- check the Ruby Application Archives for an appropriate
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
- include Fox
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
@@ -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.4'
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'
@@ -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 = "~> 2.2"
51
+ spec.required_ruby_version = [">= 2.2", "< 4"]
52
52
 
53
53
  spec.add_runtime_dependency 'mini_portile2', '~> 2.1'
54
54
  end
@@ -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
- # Save old values
195
- oldForeground = dc.foreground
196
- oldLineWidth = dc.lineWidth
197
- oldLineCap = dc.lineCap
198
- oldLineJoin = dc.lineJoin
199
- oldLineStyle = dc.lineStyle
200
-
201
- # Set properties for this line
202
- dc.foreground = foreground
203
- dc.lineWidth = lineWidth
204
- dc.lineCap = lineCap
205
- dc.lineJoin = lineJoin
206
- dc.lineStyle = lineStyle
207
-
208
- # Draw the line
209
- dc.drawLine(x1, y1, x2, y2)
210
-
211
- # Restore old properties
212
- dc.lineWidth = oldLineWidth
213
- dc.lineCap = oldLineCap
214
- dc.lineJoin = oldLineJoin
215
- dc.lineStyle = oldLineStyle
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
- oldForeground = dc.foreground
232
- dc.foreground = foreground
233
- dc.drawRectangle(x, y, width, height)
234
- dc.foreground = oldForeground
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 < RectangleShape
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, w, h)
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
- super(dc)
250
- oldForeground = dc.foreground
251
- oldTextFont = dc.font
252
- dc.font = @font
253
- dc.drawImageText(x, y, text)
254
- dc.font = oldTextFont if oldTextFont
255
- dc.foreground = oldForeground
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
- oldForeground = dc.foreground
278
- oldLineWidth = dc.lineWidth
279
- dc.foreground = foreground
280
- dc.lineWidth = 5 if selected?
281
- dc.drawArc(x, y, width, height, 0, 64*180)
282
- dc.drawArc(x, y, width, height, 64*180, 64*360)
283
- dc.foreground = oldForeground
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.drawImage(image)
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
 
@@ -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
- GL.PushName(1000000)
83
+ glPushName(1000000)
84
84
  @list.each_with_index do |obj, i|
85
- GL.LoadName(i)
86
- obj.hit(viewer)
85
+ glLoadName(i)
86
+ obj.hit(viewer)
87
87
  end
88
- GL.PopName
88
+ glPopName
89
89
  end
90
90
 
91
91
  #
@@ -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
- GL::Color(0.0, 0.0, 1.0)
51
- GL::PointSize(HANDLE_SIZE)
52
- GL::Begin(GL::POINTS)
53
- GL::Vertex(@pos)
54
- GL::End()
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
- GL::Begin(GL::POINTS)
62
- GL::Vertex(@pos)
63
- GL::End()
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
- @fm = FXGLPoint.new(-0.5, 0.0, 0.0)
97
- @to = FXGLPoint.new( 0.5, 0.0, 0.0)
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
- @fm = args[0].fm
100
- @to = args[0].to
101
+ @fm = args[0].fm
102
+ @to = args[0].to
101
103
  else
102
- @fm = FXGLPoint.new(args[0], args[1], args[2])
103
- @to = FXGLPoint.new(args[3], args[4], args[5])
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
- GL::Color(1.0, 0.0, 0.0)
124
- GL::PointSize(HANDLE_SIZE)
125
- GL::Begin(GL::LINES)
126
- GL::Vertex(@fm.pos)
127
- GL::Vertex(@to.pos)
128
- GL::End()
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
- GL::Begin(GL::LINES)
136
- GL::Vertex(@fm.pos)
137
- GL::Vertex(@to.pos)
138
- GL::End()
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
- super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE,
179
+ super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE,
177
180
  args[6], args[6])
178
181
  else
179
- super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE)
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
- -0.5*@height, 0.5*@height,
186
- -0.5*@depth, 0.5*@depth))
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
- GL::Begin(GL::TRIANGLE_STRIP)
199
- GL::Normal(0.0, 0.0, -1.0)
200
- GL::Vertex(xmin, ymin, zmin)
201
- GL::Vertex(xmin, ymax, zmin)
202
- GL::Vertex(xmax, ymin, zmin)
203
- GL::Vertex(xmax, ymax, zmin)
204
- GL::End()
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
- GL::Begin(GL::TRIANGLE_STRIP)
208
- GL::Normal(1.0, 0.0, 0.0)
209
- GL::Vertex(xmax, ymin, zmin)
210
- GL::Vertex(xmax, ymax, zmin)
211
- GL::Vertex(xmax, ymin, zmax)
212
- GL::Vertex(xmax, ymax, zmax)
213
- GL::End()
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
- GL::Begin(GL::TRIANGLE_STRIP)
217
- GL::Normal(0.0, 0.0, 1.0)
218
- GL::Vertex(xmax, ymin, zmax)
219
- GL::Vertex(xmax, ymax, zmax)
220
- GL::Vertex(xmin, ymin, zmax)
221
- GL::Vertex(xmin, ymax, zmax)
222
- GL::End()
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
- GL::Begin(GL::TRIANGLE_STRIP)
226
- GL::Normal(-1.0, 0.0, 0.0)
227
- GL::Vertex(xmin, ymin, zmax)
228
- GL::Vertex(xmin, ymax, zmax)
229
- GL::Vertex(xmin, ymin, zmin)
230
- GL::Vertex(xmin, ymax, zmin)
231
- GL::End()
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
- GL::Begin(GL::TRIANGLE_STRIP)
235
- GL::Normal(0.0, 1.0, 0.0)
236
- GL::Vertex(xmin, ymax, zmin)
237
- GL::Vertex(xmin, ymax, zmax)
238
- GL::Vertex(xmax, ymax, zmin)
239
- GL::Vertex(xmax, ymax, zmax)
240
- GL::End()
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
- GL::Begin(GL::TRIANGLE_STRIP)
244
- GL::Normal(0.0, -1.0, 0.0)
245
- GL::Vertex(xmin, ymin, zmax)
246
- GL::Vertex(xmin, ymin, zmin)
247
- GL::Vertex(xmax, ymin, zmax)
248
- GL::Vertex(xmax, ymin, zmin)
249
- GL::End()
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
- super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE)
302
+ super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE)
297
303
  elsif args.length == 6
298
- super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE,
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 = GLU::NewQuadric()
314
- GLU::QuadricDrawStyle(quad, GLU::FILL)
315
- GL::PushMatrix()
316
- GL::Rotate(-90, 1, 0, 0)
317
- GLU::Cylinder(quad, @radius, 0, @height, @slices, @stacks)
318
- GLU::QuadricOrientation(quad, GLU::INSIDE)
319
- GLU::Disk(quad, 0, @radius, @slices, @loops)
320
- GLU::DeleteQuadric(quad)
321
- GL::PopMatrix()
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
- super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE)
377
+ super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE)
369
378
  else
370
- super(args[0], args[1], args[2], SHADING_SMOOTH|STYLE_SURFACE,
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 = GLU::NewQuadric()
386
- GLU::QuadricDrawStyle(quad, GLU::FILL)
387
- GL::PushMatrix()
388
- GL::Rotate(-90, 1, 0, 0)
389
- GLU::Cylinder(quad, @radius, @radius, @height, @slices, @stacks)
390
- GLU::QuadricOrientation(quad, GLU::INSIDE)
391
- GLU::Disk(quad, 0, @radius, @slices, @loops)
392
- GL::Translate(0, 0, @height)
393
- GLU::QuadricOrientation(quad, GLU::OUTSIDE)
394
- GLU::Disk(quad, 0, @radius, @slices, @loops)
395
- GL::PopMatrix()
396
- GLU::DeleteQuadric(quad)
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 = GLU::NewQuadric()
452
- GLU::QuadricDrawStyle(quad, GLU::FILL)
453
- GLU::Sphere(quad, @radius, @slices, @stacks)
454
- GLU::DeleteQuadric(quad)
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