qtbindings 4.8.6.0-x86-mingw32 → 4.8.6.1-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/COPYING.LIB.txt +510 -510
- data/COPYING.txt +286 -286
- data/KNOWN_ISSUES.txt +17 -17
- data/bin/2.2/rbrcc.exe +0 -0
- data/bin/2.2/rbuic4.exe +0 -0
- data/bin/2.2/smokeapi.exe +0 -0
- data/bin/2.2/smokedeptool.exe +0 -0
- data/bin/rbqtapi +152 -152
- data/examples/designer/calculatorbuilder/calculatorbuilder.qrc +5 -5
- data/examples/designer/calculatorbuilder/calculatorform.rb +60 -60
- data/examples/designer/calculatorbuilder/calculatorform.ui +299 -299
- data/examples/designer/calculatorbuilder/main.rb +34 -34
- data/examples/designer/calculatorbuilder/makefile +2 -2
- data/examples/designer/calculatorform/calculatorform.rb +46 -46
- data/examples/designer/calculatorform/calculatorform.ui +277 -277
- data/examples/designer/calculatorform/main.rb +32 -32
- data/examples/designer/calculatorform/makefile +3 -3
- data/examples/desktop/screenshot/main.rb +32 -32
- data/examples/desktop/screenshot/screenshot.rb +157 -157
- data/examples/desktop/systray/images/bad.svg +64 -64
- data/examples/desktop/systray/images/heart.svg +55 -55
- data/examples/desktop/systray/images/trash.svg +58 -58
- data/examples/desktop/systray/main.rb +41 -41
- data/examples/desktop/systray/makefile +2 -2
- data/examples/desktop/systray/systray.qrc +7 -7
- data/examples/desktop/systray/window.rb +219 -219
- data/examples/dialogs/complexwizard/complexwizard.rb +140 -140
- data/examples/dialogs/complexwizard/licensewizard.rb +294 -294
- data/examples/dialogs/complexwizard/main.rb +31 -31
- data/examples/dialogs/configdialog/configdialog.rb +109 -109
- data/examples/dialogs/configdialog/main.rb +31 -31
- data/examples/dialogs/configdialog/pages.rb +140 -140
- data/examples/dialogs/extension/finddialog.rb +89 -89
- data/examples/dialogs/extension/main.rb +31 -31
- data/examples/dialogs/findfiles/main.rb +32 -32
- data/examples/dialogs/findfiles/window.rb +177 -177
- data/examples/dialogs/simplewizard/classwizard.rb +374 -374
- data/examples/dialogs/simplewizard/main.rb +31 -31
- data/examples/dialogs/simplewizard/simplewizard.rb +110 -110
- data/examples/dialogs/standarddialogs/dialog.rb +340 -340
- data/examples/dialogs/standarddialogs/main.rb +31 -31
- data/examples/dialogs/tabdialog/main.rb +38 -38
- data/examples/dialogs/tabdialog/tabdialog.rb +178 -178
- data/examples/draganddrop/draggableicons/dragwidget.rb +125 -125
- data/examples/draganddrop/draggableicons/main.rb +41 -41
- data/examples/draganddrop/draggabletext/draglabel.rb +51 -51
- data/examples/draganddrop/draggabletext/dragwidget.rb +94 -94
- data/examples/draganddrop/draggabletext/main.rb +33 -33
- data/examples/draganddrop/draggabletext/words.txt +41 -41
- data/examples/draganddrop/dropsite/dropsitewidget.rb +99 -99
- data/examples/draganddrop/dropsite/dropsitewindow.rb +114 -114
- data/examples/draganddrop/dropsite/main.rb +33 -33
- data/examples/draganddrop/fridgemagnets/draglabel.rb +78 -78
- data/examples/draganddrop/fridgemagnets/dragwidget.rb +130 -130
- data/examples/draganddrop/fridgemagnets/main.rb +33 -33
- data/examples/draganddrop/fridgemagnets/words.txt +48 -48
- data/examples/draganddrop/puzzle/main.rb +33 -33
- data/examples/draganddrop/puzzle/mainwindow.rb +136 -136
- data/examples/draganddrop/puzzle/pieceslist.rb +95 -95
- data/examples/draganddrop/puzzle/puzzlewidget.rb +190 -190
- data/examples/graphicsview/collidingmice/main.rb +53 -53
- data/examples/graphicsview/collidingmice/makefile +2 -2
- data/examples/graphicsview/collidingmice/mice.qrc +5 -5
- data/examples/graphicsview/collidingmice/mouse.rb +176 -176
- data/examples/graphicsview/dragdroprobot/coloritem.rb +86 -86
- data/examples/graphicsview/dragdroprobot/main.rb +57 -57
- data/examples/graphicsview/dragdroprobot/makefile +2 -2
- data/examples/graphicsview/dragdroprobot/robot.qrc +5 -5
- data/examples/graphicsview/dragdroprobot/robot.rb +246 -246
- data/examples/itemviews/chart/chart.qrc +5 -5
- data/examples/itemviews/chart/main.rb +33 -33
- data/examples/itemviews/chart/mainwindow.rb +151 -151
- data/examples/itemviews/chart/makefile +2 -2
- data/examples/itemviews/chart/mydata.cht +8 -8
- data/examples/itemviews/chart/pieview.rb +516 -516
- data/examples/itemviews/chart/qtdata.cht +14 -14
- data/examples/itemviews/dirview/main.rb +39 -39
- data/examples/itemviews/pixelator/imagemodel.rb +51 -51
- data/examples/itemviews/pixelator/images.qrc +5 -5
- data/examples/itemviews/pixelator/main.rb +34 -34
- data/examples/itemviews/pixelator/mainwindow.rb +218 -218
- data/examples/itemviews/pixelator/makefile +3 -3
- data/examples/itemviews/pixelator/pixeldelegate.rb +67 -67
- data/examples/itemviews/puzzle/main.rb +36 -36
- data/examples/itemviews/puzzle/mainwindow.rb +143 -143
- data/examples/itemviews/puzzle/piecesmodel.rb +174 -174
- data/examples/itemviews/puzzle/puzzlewidget.rb +192 -192
- data/examples/itemviews/simpledommodel/domitem.rb +62 -62
- data/examples/itemviews/simpledommodel/dommodel.rb +139 -139
- data/examples/itemviews/simpledommodel/main.rb +33 -33
- data/examples/itemviews/simpledommodel/mainwindow.rb +66 -66
- data/examples/itemviews/simpletreemodel/default.txt +40 -40
- data/examples/itemviews/simpletreemodel/main.rb +41 -41
- data/examples/itemviews/simpletreemodel/makefile +2 -2
- data/examples/itemviews/simpletreemodel/simpletreemodel.qrc +5 -5
- data/examples/itemviews/simpletreemodel/treeitem.rb +67 -67
- data/examples/itemviews/simpletreemodel/treemodel.rb +164 -164
- data/examples/itemviews/sortingmodel/default.txt +40 -40
- data/examples/itemviews/sortingmodel/main.rb +53 -53
- data/examples/itemviews/sortingmodel/treeitem.rb +73 -73
- data/examples/itemviews/sortingmodel/treemodel.rb +166 -166
- data/examples/itemviews/spinboxdelegate/main.rb +47 -47
- data/examples/itemviews/spinboxdelegate/spinboxdelegate.rb +62 -62
- data/examples/killerfilter/killerfilter.rb +55 -55
- data/examples/layouts/basiclayouts/dialog.rb +110 -110
- data/examples/layouts/basiclayouts/main.rb +31 -31
- data/examples/layouts/borderlayout/borderlayout.rb +190 -190
- data/examples/layouts/borderlayout/main.rb +32 -32
- data/examples/layouts/borderlayout/window.rb +52 -52
- data/examples/layouts/flowlayouts/flowlayout.rb +108 -108
- data/examples/layouts/flowlayouts/main.rb +32 -32
- data/examples/layouts/flowlayouts/window.rb +43 -43
- data/examples/mainwindows/application/main.rb +32 -32
- data/examples/mainwindows/application/mainwindow.rb +285 -285
- data/examples/mainwindows/dockwidgets/main.rb +32 -32
- data/examples/mainwindows/dockwidgets/mainwindow.rb +302 -302
- data/examples/mainwindows/mdi/main.rb +32 -32
- data/examples/mainwindows/mdi/mainwindow.rb +363 -363
- data/examples/mainwindows/mdi/mdichild.rb +152 -152
- data/examples/mainwindows/menus/main.rb +32 -32
- data/examples/mainwindows/menus/mainwindow.rb +327 -327
- data/examples/mainwindows/recentfiles/main.rb +32 -32
- data/examples/mainwindows/recentfiles/mainwindow.rb +258 -258
- data/examples/mainwindows/sdi/main.rb +32 -32
- data/examples/mainwindows/sdi/mainwindow.rb +335 -335
- data/examples/network/broadcastreceiver/main.rb +32 -32
- data/examples/network/broadcastreceiver/receiver.rb +64 -64
- data/examples/network/broadcastsender/main.rb +32 -32
- data/examples/network/broadcastsender/sender.rb +72 -72
- data/examples/network/fortuneclient/client.rb +149 -149
- data/examples/network/fortuneclient/main.rb +32 -32
- data/examples/network/fortuneserver/main.rb +32 -32
- data/examples/network/fortuneserver/server.rb +88 -88
- data/examples/network/ftp/ftpwindow.rb +259 -259
- data/examples/network/ftp/main.rb +32 -32
- data/examples/network/http/httpwindow.rb +187 -187
- data/examples/network/http/main.rb +32 -32
- data/examples/network/loopback/dialog.rb +163 -163
- data/examples/network/loopback/main.rb +32 -32
- data/examples/opengl/grabber/glwidget.rb +265 -265
- data/examples/opengl/grabber/main.rb +32 -32
- data/examples/opengl/grabber/mainwindow.rb +189 -189
- data/examples/opengl/hellogl/glwidget.rb +226 -226
- data/examples/opengl/hellogl/main.rb +32 -32
- data/examples/opengl/hellogl/window.rb +66 -66
- data/examples/opengl/textures/glwidget.rb +151 -151
- data/examples/opengl/textures/main.rb +32 -32
- data/examples/opengl/textures/window.rb +77 -77
- data/examples/painting/basicdrawing/main.rb +32 -32
- data/examples/painting/basicdrawing/renderarea.rb +166 -166
- data/examples/painting/basicdrawing/window.rb +215 -215
- data/examples/painting/concentriccircles/circlewidget.rb +88 -88
- data/examples/painting/concentriccircles/main.rb +32 -32
- data/examples/painting/concentriccircles/window.rb +72 -72
- data/examples/painting/fontsampler/main.rb +32 -32
- data/examples/painting/fontsampler/mainwindow.rb +369 -369
- data/examples/painting/fontsampler/mainwindowbase.ui +136 -136
- data/examples/painting/fontsampler/makefile +8 -8
- data/examples/painting/fontsampler/previewdialog.rb +257 -257
- data/examples/painting/fontsampler/previewdialogbase.ui +224 -224
- data/examples/painting/fontsampler/previewlabel.rb +43 -43
- data/examples/painting/imagecomposition/imagecomposer.rb +152 -152
- data/examples/painting/imagecomposition/imagecomposition.qrc +6 -6
- data/examples/painting/imagecomposition/main.rb +33 -33
- data/examples/painting/imagecomposition/makefile +2 -2
- data/examples/painting/painterpaths/main.rb +32 -32
- data/examples/painting/painterpaths/renderarea.rb +97 -97
- data/examples/painting/painterpaths/window.rb +247 -247
- data/examples/painting/svgviewer/files/bubbles.svg +212 -212
- data/examples/painting/svgviewer/files/cubic.svg +77 -77
- data/examples/painting/svgviewer/files/spheres.svg +79 -79
- data/examples/painting/svgviewer/main.rb +38 -38
- data/examples/painting/svgviewer/mainwindow.rb +99 -99
- data/examples/painting/svgviewer/makefile +2 -2
- data/examples/painting/svgviewer/svgview.rb +156 -156
- data/examples/painting/svgviewer/svgviewer.qrc +6 -6
- data/examples/painting/svgviewer/svgwindow.rb +87 -87
- data/examples/painting/transformations/main.rb +32 -32
- data/examples/painting/transformations/renderarea.rb +127 -127
- data/examples/painting/transformations/window.rb +153 -153
- data/examples/passivepopup/passivepopup.rb +38 -38
- data/examples/qdbus/chat/chat.rb +146 -146
- data/examples/qdbus/chat/chat_adaptor.rb +12 -12
- data/examples/qdbus/chat/chat_interface.rb +13 -13
- data/examples/qdbus/chat/chatmainwindow.ui +184 -184
- data/examples/qdbus/chat/chatsetnickname.ui +145 -145
- data/examples/qdbus/chat/makefile +8 -8
- data/examples/qdbus/complexpingpong/complexping.rb +92 -92
- data/examples/qdbus/complexpingpong/complexpong.rb +83 -83
- data/examples/qdbus/complexpingpong/ping-common.rb +1 -1
- data/examples/qdbus/listnames/listnames.rb +69 -69
- data/examples/qdbus/pingpong/ping-common.rb +1 -1
- data/examples/qdbus/pingpong/ping.rb +52 -52
- data/examples/qdbus/pingpong/pong.rb +55 -55
- data/examples/qdbus/remotecontrolledcar/car/car.rb +151 -151
- data/examples/qdbus/remotecontrolledcar/car/main.rb +50 -50
- data/examples/qdbus/remotecontrolledcar/controller/controller.rb +66 -66
- data/examples/qdbus/remotecontrolledcar/controller/controller.ui +61 -61
- data/examples/qdbus/remotecontrolledcar/controller/main.rb +32 -32
- data/examples/qdbus/remotecontrolledcar/controller/makefile +2 -2
- data/examples/qtscribble/scribble.rb +270 -270
- data/examples/richtext/calendar/main.rb +33 -33
- data/examples/richtext/calendar/mainwindow.rb +173 -173
- data/examples/richtext/orderform/detailsdialog.rb +130 -130
- data/examples/richtext/orderform/main.rb +34 -34
- data/examples/richtext/orderform/mainwindow.rb +194 -194
- data/examples/richtext/syntaxhighlighter/examples/example +79 -79
- data/examples/richtext/syntaxhighlighter/highlighter.rb +90 -90
- data/examples/richtext/syntaxhighlighter/main.rb +34 -34
- data/examples/richtext/syntaxhighlighter/mainwindow.rb +105 -105
- data/examples/ruboids/LICENSE.txt +58 -58
- data/examples/ruboids/Manifest +26 -26
- data/examples/ruboids/README +53 -53
- data/examples/ruboids/TODO +29 -29
- data/examples/ruboids/boids.properties +33 -33
- data/examples/ruboids/generateManifest.rb +42 -42
- data/examples/ruboids/release.rb +152 -152
- data/examples/ruboids/ruboids/Boid.rb +141 -141
- data/examples/ruboids/ruboids/BoidView.rb +159 -159
- data/examples/ruboids/ruboids/Camera.rb +24 -24
- data/examples/ruboids/ruboids/CameraDialog.rb +218 -218
- data/examples/ruboids/ruboids/Canvas.rb +143 -143
- data/examples/ruboids/ruboids/Cloud.rb +61 -61
- data/examples/ruboids/ruboids/CloudView.rb +54 -54
- data/examples/ruboids/ruboids/Flock.rb +47 -47
- data/examples/ruboids/ruboids/Graphics.rb +278 -278
- data/examples/ruboids/ruboids/Params.rb +87 -87
- data/examples/ruboids/ruboids/Point.rb +153 -153
- data/examples/ruboids/ruboids/Thing.rb +34 -34
- data/examples/ruboids/ruboids/Triangle.rb +21 -21
- data/examples/ruboids/ruboids/View.rb +88 -88
- data/examples/ruboids/ruboids/World.rb +82 -82
- data/examples/ruboids/ruboids/WorldWindow.rb +52 -52
- data/examples/ruboids/ruboids/info.rb +12 -12
- data/examples/ruboids/ruboids/ruboids.rb +29 -29
- data/examples/threading/main_thread.rb +19 -19
- data/examples/tutorial/t1/t1.rb +10 -10
- data/examples/tutorial/t10/cannon.rb +72 -72
- data/examples/tutorial/t10/lcdrange.rb +45 -45
- data/examples/tutorial/t10/t10.rb +55 -55
- data/examples/tutorial/t11/cannon.rb +124 -124
- data/examples/tutorial/t11/lcdrange.rb +45 -45
- data/examples/tutorial/t11/t11.rb +65 -65
- data/examples/tutorial/t12/cannon.rb +158 -158
- data/examples/tutorial/t12/lcdrange.rb +59 -59
- data/examples/tutorial/t12/t12.rb +66 -66
- data/examples/tutorial/t13/cannon.rb +208 -208
- data/examples/tutorial/t13/gamebrd.rb +113 -113
- data/examples/tutorial/t13/lcdrange.rb +60 -60
- data/examples/tutorial/t13/t13.rb +11 -11
- data/examples/tutorial/t14/cannon.rb +263 -263
- data/examples/tutorial/t14/gamebrd.rb +123 -123
- data/examples/tutorial/t14/lcdrange.rb +63 -63
- data/examples/tutorial/t14/t14.rb +11 -11
- data/examples/tutorial/t2/t2.rb +16 -16
- data/examples/tutorial/t3/t3.rb +18 -18
- data/examples/tutorial/t4/t4.rb +25 -25
- data/examples/tutorial/t5/t5.rb +37 -37
- data/examples/tutorial/t6/t6.rb +52 -52
- data/examples/tutorial/t7/lcdrange.rb +32 -32
- data/examples/tutorial/t7/t7.rb +42 -42
- data/examples/tutorial/t8/cannon.rb +38 -38
- data/examples/tutorial/t8/lcdrange.rb +45 -45
- data/examples/tutorial/t8/t8.rb +43 -43
- data/examples/tutorial/t9/cannon.rb +45 -45
- data/examples/tutorial/t9/lcdrange.rb +46 -46
- data/examples/tutorial/t9/t9.rb +43 -43
- data/examples/widgets/analogclock/analogclock.rb +94 -94
- data/examples/widgets/analogclock/main.rb +9 -9
- data/examples/widgets/calculator/button.rb +45 -45
- data/examples/widgets/calculator/calculator.rb +382 -382
- data/examples/widgets/calculator/main.rb +32 -32
- data/examples/widgets/charactermap/characterwidget.rb +109 -109
- data/examples/widgets/charactermap/main.rb +32 -32
- data/examples/widgets/charactermap/mainwindow.rb +118 -118
- data/examples/widgets/digitalclock/digitalclock.rb +30 -30
- data/examples/widgets/digitalclock/main.rb +9 -9
- data/examples/widgets/groupbox/main.rb +32 -32
- data/examples/widgets/groupbox/window.rb +134 -134
- data/examples/widgets/icons/iconpreviewarea.rb +110 -110
- data/examples/widgets/icons/iconsizespinbox.rb +39 -39
- data/examples/widgets/icons/imagedelegate.rb +73 -73
- data/examples/widgets/icons/main.rb +32 -32
- data/examples/widgets/icons/mainwindow.rb +351 -351
- data/examples/widgets/imageviewer/imageviewer.rb +219 -219
- data/examples/widgets/imageviewer/main.rb +32 -32
- data/examples/widgets/lineedits/main.rb +32 -32
- data/examples/widgets/lineedits/window.rb +199 -199
- data/examples/widgets/movie/main.rb +32 -32
- data/examples/widgets/movie/movieplayer.rb +201 -201
- data/examples/widgets/screenshot/main.rb +32 -32
- data/examples/widgets/screenshot/screenshot.rb +154 -154
- data/examples/widgets/scribble/main.rb +32 -32
- data/examples/widgets/scribble/mainwindow.rb +202 -202
- data/examples/widgets/scribble/scribblearea.rb +154 -154
- data/examples/widgets/sliders/main.rb +32 -32
- data/examples/widgets/sliders/slidersgroup.rb +97 -97
- data/examples/widgets/sliders/window.rb +124 -124
- data/examples/widgets/spinboxes/main.rb +32 -32
- data/examples/widgets/spinboxes/window.rb +213 -213
- data/examples/widgets/tetrix/main.rb +33 -33
- data/examples/widgets/tetrix/tetrixboard.rb +346 -346
- data/examples/widgets/tetrix/tetrixpiece.rb +135 -135
- data/examples/widgets/tetrix/tetrixwindow.rb +88 -88
- data/examples/widgets/tooltips/main.rb +32 -32
- data/examples/widgets/tooltips/shapeitem.rb +31 -31
- data/examples/widgets/tooltips/sortingbox.rb +222 -222
- data/examples/widgets/wiggly/dialog.rb +48 -48
- data/examples/widgets/wiggly/main.rb +9 -9
- data/examples/widgets/wiggly/wigglywidget.rb +75 -75
- data/examples/widgets/windowflags/controllerwindow.rb +195 -195
- data/examples/widgets/windowflags/main.rb +32 -32
- data/examples/widgets/windowflags/previewwindow.rb +103 -103
- data/examples/xml/dombookmarks/frank.xbel +230 -230
- data/examples/xml/dombookmarks/jennifer.xbel +93 -93
- data/examples/xml/dombookmarks/main.rb +34 -34
- data/examples/xml/dombookmarks/mainwindow.rb +129 -129
- data/examples/xml/dombookmarks/xbeltree.rb +172 -172
- data/examples/xml/saxbookmarks/frank.xbel +230 -230
- data/examples/xml/saxbookmarks/jennifer.xbel +93 -93
- data/examples/xml/saxbookmarks/main.rb +34 -34
- data/examples/xml/saxbookmarks/mainwindow.rb +144 -144
- data/examples/xml/saxbookmarks/xbelgenerator.rb +95 -95
- data/examples/xml/saxbookmarks/xbelhandler.rb +122 -122
- data/extconf.rb +2 -2
- data/lib/2.0/libqtruby4shared.dll +0 -0
- data/lib/2.0/libsmokebase.dll +0 -0
- data/lib/2.0/libsmokeqtcore.dll +0 -0
- data/lib/2.0/libsmokeqtdeclarative.dll +0 -0
- data/lib/2.0/libsmokeqtgui.dll +0 -0
- data/lib/2.0/libsmokeqthelp.dll +0 -0
- data/lib/2.0/libsmokeqtmultimedia.dll +0 -0
- data/lib/2.0/libsmokeqtnetwork.dll +0 -0
- data/lib/2.0/libsmokeqtopengl.dll +0 -0
- data/lib/2.0/libsmokeqtsql.dll +0 -0
- data/lib/2.0/libsmokeqtsvg.dll +0 -0
- data/lib/2.0/libsmokeqttest.dll +0 -0
- data/lib/2.0/libsmokeqtuitools.dll +0 -0
- data/lib/2.0/libsmokeqtwebkit.dll +0 -0
- data/lib/2.0/libsmokeqtxml.dll +0 -0
- data/lib/2.0/libsmokeqtxmlpatterns.dll +0 -0
- data/lib/2.0/qtdeclarative.so +0 -0
- data/lib/2.0/qtruby4.so +0 -0
- data/lib/2.0/qtscript.so +0 -0
- data/lib/2.0/qttest.so +0 -0
- data/lib/2.0/qtuitools.so +0 -0
- data/lib/2.0/qtwebkit.so +0 -0
- data/lib/2.1/libqtruby4shared.dll +0 -0
- data/lib/2.1/libsmokebase.dll +0 -0
- data/lib/2.1/libsmokeqtcore.dll +0 -0
- data/lib/2.1/libsmokeqtdeclarative.dll +0 -0
- data/lib/2.1/libsmokeqtgui.dll +0 -0
- data/lib/2.1/libsmokeqthelp.dll +0 -0
- data/lib/2.1/libsmokeqtmultimedia.dll +0 -0
- data/lib/2.1/libsmokeqtnetwork.dll +0 -0
- data/lib/2.1/libsmokeqtopengl.dll +0 -0
- data/lib/2.1/libsmokeqtscript.dll +0 -0
- data/lib/2.1/libsmokeqtsql.dll +0 -0
- data/lib/2.1/libsmokeqtsvg.dll +0 -0
- data/lib/2.1/libsmokeqttest.dll +0 -0
- data/lib/2.1/libsmokeqtwebkit.dll +0 -0
- data/lib/2.1/libsmokeqtxml.dll +0 -0
- data/lib/2.1/libsmokeqtxmlpatterns.dll +0 -0
- data/lib/2.1/qtdeclarative.so +0 -0
- data/lib/2.1/qtruby4.so +0 -0
- data/lib/2.1/qtscript.so +0 -0
- data/lib/2.1/qttest.so +0 -0
- data/lib/2.1/qtuitools.so +0 -0
- data/lib/2.1/qtwebkit.so +0 -0
- data/lib/2.2/libqtruby4shared.dll +0 -0
- data/lib/2.2/libsmokebase.dll +0 -0
- data/lib/2.2/libsmokeqtcore.dll +0 -0
- data/lib/2.2/libsmokeqtdeclarative.dll +0 -0
- data/lib/2.2/libsmokeqtgui.dll +0 -0
- data/lib/2.2/libsmokeqthelp.dll +0 -0
- data/lib/2.2/libsmokeqtmultimedia.dll +0 -0
- data/lib/2.2/libsmokeqtnetwork.dll +0 -0
- data/lib/2.2/libsmokeqtopengl.dll +0 -0
- data/lib/2.2/libsmokeqtscript.dll +0 -0
- data/lib/2.2/libsmokeqtsql.dll +0 -0
- data/lib/2.2/libsmokeqtsvg.dll +0 -0
- data/lib/2.2/libsmokeqttest.dll +0 -0
- data/lib/2.2/libsmokeqtuitools.dll +0 -0
- data/lib/2.2/libsmokeqtwebkit.dll +0 -0
- data/lib/2.2/libsmokeqtxml.dll +0 -0
- data/lib/2.2/libsmokeqtxmlpatterns.dll +0 -0
- data/lib/2.2/qtdeclarative.so +0 -0
- data/lib/2.2/qtruby4.so +0 -0
- data/lib/2.2/qtscript.so +0 -0
- data/lib/2.2/qttest.so +0 -0
- data/lib/2.2/qtuitools.so +0 -0
- data/lib/2.2/qtwebkit.so +0 -0
- data/lib/Qt.rb +1 -1
- data/lib/Qt/qtruby4.rb +16 -0
- data/lib/Qt4.rb +111 -111
- data/lib/qtbindings_qt_version.rb +2 -0
- data/lib/qtbindings_version.rb +2 -2
- data/lib/qtdeclarative/qtdeclarative.rb +17 -17
- data/lib/qtscript/qtscript.rb +40 -40
- data/lib/qttest/qttest.rb +166 -166
- data/lib/qtuitools/qtuitools.rb +17 -17
- data/lib/qtwebkit/qtwebkit.rb +17 -17
- metadata +31 -4
- data/README.txt +0 -148
@@ -1,47 +1,47 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2001 by Jim Menard <jimm@io.com>
|
3
|
-
#
|
4
|
-
# Released under the same license as Ruby. See
|
5
|
-
# http://www.ruby-lang.org/en/LICENSE.txt.
|
6
|
-
#
|
7
|
-
|
8
|
-
require './Flock'
|
9
|
-
require './Boid'
|
10
|
-
require './Params'
|
11
|
-
|
12
|
-
class Flock
|
13
|
-
attr_reader :members
|
14
|
-
|
15
|
-
def initialize
|
16
|
-
@members = []
|
17
|
-
end
|
18
|
-
|
19
|
-
def add(boid)
|
20
|
-
@members << boid
|
21
|
-
boid.flock = self
|
22
|
-
end
|
23
|
-
|
24
|
-
def draw
|
25
|
-
@members.each { | boid | boid.draw() }
|
26
|
-
end
|
27
|
-
|
28
|
-
def move
|
29
|
-
@members.each { | boid | boid.move() }
|
30
|
-
end
|
31
|
-
|
32
|
-
# Return distance between two boid's positions.
|
33
|
-
def distBetween(b1, b2)
|
34
|
-
return b1.position.distanceTo(b2.position)
|
35
|
-
end
|
36
|
-
|
37
|
-
# Center of mass
|
38
|
-
def centerExcluding(b)
|
39
|
-
p = Point.new()
|
40
|
-
@members.each { | boid |
|
41
|
-
p.addPoint(boid.position) unless boid == b
|
42
|
-
}
|
43
|
-
p.divideBy(@members.length - 1)
|
44
|
-
return p
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
1
|
+
#
|
2
|
+
# Copyright (c) 2001 by Jim Menard <jimm@io.com>
|
3
|
+
#
|
4
|
+
# Released under the same license as Ruby. See
|
5
|
+
# http://www.ruby-lang.org/en/LICENSE.txt.
|
6
|
+
#
|
7
|
+
|
8
|
+
require './Flock'
|
9
|
+
require './Boid'
|
10
|
+
require './Params'
|
11
|
+
|
12
|
+
class Flock
|
13
|
+
attr_reader :members
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
@members = []
|
17
|
+
end
|
18
|
+
|
19
|
+
def add(boid)
|
20
|
+
@members << boid
|
21
|
+
boid.flock = self
|
22
|
+
end
|
23
|
+
|
24
|
+
def draw
|
25
|
+
@members.each { | boid | boid.draw() }
|
26
|
+
end
|
27
|
+
|
28
|
+
def move
|
29
|
+
@members.each { | boid | boid.move() }
|
30
|
+
end
|
31
|
+
|
32
|
+
# Return distance between two boid's positions.
|
33
|
+
def distBetween(b1, b2)
|
34
|
+
return b1.position.distanceTo(b2.position)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Center of mass
|
38
|
+
def centerExcluding(b)
|
39
|
+
p = Point.new()
|
40
|
+
@members.each { | boid |
|
41
|
+
p.addPoint(boid.position) unless boid == b
|
42
|
+
}
|
43
|
+
p.divideBy(@members.length - 1)
|
44
|
+
return p
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
@@ -1,278 +1,278 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2001 by Jim Menard <jimm@io.com>
|
3
|
-
#
|
4
|
-
# Released under the same license as Ruby. See
|
5
|
-
# http://www.ruby-lang.org/en/LICENSE.txt.
|
6
|
-
#
|
7
|
-
|
8
|
-
require './Triangle'
|
9
|
-
|
10
|
-
class Graphics
|
11
|
-
|
12
|
-
DEFAULT_SPHERE_ITERATIONS = 3
|
13
|
-
|
14
|
-
XPLUS = Point.new(1, 0, 0) # X
|
15
|
-
XMINUS = Point.new(-1, 0, 0)# -X
|
16
|
-
YPLUS = Point.new(0, 1, 0) # Y
|
17
|
-
YMINUS = Point.new(0, -1, 0)# -Y
|
18
|
-
ZPLUS = Point.new(0, 0, 1) # Z
|
19
|
-
ZMINUS = Point.new(0, 0, -1)# -Z
|
20
|
-
|
21
|
-
# defined w/counter-clockwise triangles
|
22
|
-
OCTAHEDRON = [
|
23
|
-
Triangle.new(YPLUS, ZPLUS, XPLUS),
|
24
|
-
Triangle.new(XMINUS, ZPLUS, YPLUS),
|
25
|
-
Triangle.new(YMINUS, ZPLUS, XMINUS),
|
26
|
-
Triangle.new(XPLUS, ZPLUS, YMINUS),
|
27
|
-
Triangle.new(ZMINUS, YPLUS, XPLUS),
|
28
|
-
Triangle.new(ZMINUS, XMINUS , YPLUS),
|
29
|
-
Triangle.new(ZMINUS, YMINUS , XMINUS),
|
30
|
-
Triangle.new(ZMINUS, XPLUS, YMINUS)
|
31
|
-
]
|
32
|
-
# Defines counter-clockwise points used in OpenGL TRIANGLE_STRIP to
|
33
|
-
# create a circle on the X/Z plane. Don't include center point here;
|
34
|
-
# It is added when outputting the circle.
|
35
|
-
SQUARE = [
|
36
|
-
XPLUS, ZMINUS, XMINUS, ZPLUS, XPLUS
|
37
|
-
]
|
38
|
-
|
39
|
-
@@spheres = Hash.new()
|
40
|
-
@@circles = Hash.new()
|
41
|
-
|
42
|
-
def Graphics.radiansToDegrees(rad)
|
43
|
-
return rad * 180.0 / Math::PI
|
44
|
-
end
|
45
|
-
|
46
|
-
def Graphics.degreesToRadians(deg)
|
47
|
-
return deg * Math::PI / 180.0
|
48
|
-
end
|
49
|
-
|
50
|
-
# Given a vector, return a point containing x, y, z rotation angles.
|
51
|
-
#
|
52
|
-
# atan2(x, y) = the angle formed with the x axis by the ray from the
|
53
|
-
# origin to the point {x,y}
|
54
|
-
def Graphics.rotations(v)
|
55
|
-
return Point::ORIGIN.dup() if v.nil?
|
56
|
-
return v if v == Point::ORIGIN
|
57
|
-
|
58
|
-
x = Math.atan2(v.y, v.z)
|
59
|
-
y = Math.atan2(v.z, v.x)
|
60
|
-
z = Math.atan2(v.y, v.x)
|
61
|
-
|
62
|
-
rot = Point.new(z, x, y)
|
63
|
-
rot.add(Math::PI).multiplyBy(180.0).divideBy(Math::PI)
|
64
|
-
|
65
|
-
rot.x = rot.x.to_i
|
66
|
-
rot.y = rot.y.to_i
|
67
|
-
rot.z = rot.z.to_i
|
68
|
-
|
69
|
-
return rot
|
70
|
-
end
|
71
|
-
|
72
|
-
# Build box from corners. All faces are counter-clockwise.
|
73
|
-
def Graphics.boxFromCorners(p0, p1)
|
74
|
-
pa = p0.dup()
|
75
|
-
pb = p1.dup()
|
76
|
-
|
77
|
-
# Make sure all coords of pa are < all coords of pb
|
78
|
-
if pa.x > pb.x
|
79
|
-
tmp = pa.x; pa.x = pb.x; pb.x = tmp
|
80
|
-
end
|
81
|
-
if pa.y > pb.y
|
82
|
-
tmp = pa.y; pa.y = pb.y; pb.y = tmp
|
83
|
-
end
|
84
|
-
if pa.z > pb.z
|
85
|
-
tmp = pa.z; pa.z = pb.z; pb.z = tmp
|
86
|
-
end
|
87
|
-
|
88
|
-
Begin(QUAD_STRIP)
|
89
|
-
|
90
|
-
# top
|
91
|
-
Vertex(pb.x, pb.y, pa.z)
|
92
|
-
Vertex(pa.x, pb.y, pa.z)
|
93
|
-
# top/front
|
94
|
-
Vertex(pb.x, pb.y, pb.z)
|
95
|
-
Vertex(pa.x, pb.y, pb.z)
|
96
|
-
# front/bottom
|
97
|
-
Vertex(pb.x, pa.y, pb.z)
|
98
|
-
Vertex(pa.x, pa.y, pb.z)
|
99
|
-
# bottom/back
|
100
|
-
Vertex(pb.x, pa.y, pa.z)
|
101
|
-
Vertex(pa.x, pa.y, pa.z)
|
102
|
-
# back/top
|
103
|
-
Vertex(pb.x, pb.y, pa.z)
|
104
|
-
Vertex(pa.x, pb.y, pa.z)
|
105
|
-
|
106
|
-
End()
|
107
|
-
|
108
|
-
Begin(QUADS)
|
109
|
-
|
110
|
-
# left
|
111
|
-
Vertex(pa.x, pa.y, pb.z)
|
112
|
-
Vertex(pa.x, pa.y, pa.z)
|
113
|
-
Vertex(pa.x, pb.y, pa.z)
|
114
|
-
Vertex(pa.x, pb.y, pb.z)
|
115
|
-
|
116
|
-
# right
|
117
|
-
Vertex(pb.x, pa.y, pb.z)
|
118
|
-
Vertex(pb.x, pa.y, pa.z)
|
119
|
-
Vertex(pb.x, pb.y, pa.z)
|
120
|
-
Vertex(pb.x, pb.y, pb.z)
|
121
|
-
|
122
|
-
End()
|
123
|
-
end
|
124
|
-
|
125
|
-
# sphere() (and buildSphere()) - generate a triangle mesh approximating
|
126
|
-
# a sphere by recursive subdivision. First approximation is an
|
127
|
-
# octahedron; each level of refinement increases the number of
|
128
|
-
# triangles by a factor of 4.
|
129
|
-
#
|
130
|
-
# Level 3 (128 triangles) is a good tradeoff if gouraud shading is used
|
131
|
-
# to render the database.
|
132
|
-
#
|
133
|
-
# Usage: sphere [level] [counterClockwise]
|
134
|
-
#
|
135
|
-
# The value level is an integer >= 1 setting the recursion level
|
136
|
-
# (default = DEFAULT_SPHERE_ITERATIONS).
|
137
|
-
# The boolean counterClockwise causes triangles to be generated
|
138
|
-
# with vertices in counterclockwise order as viewed from
|
139
|
-
# the outside in a RHS coordinate system. The default is
|
140
|
-
# counter-clockwise.
|
141
|
-
#
|
142
|
-
# @author Jon Leech (leech@cs.unc.edu) 3/24/89 (C version)
|
143
|
-
# Ruby version by Jim Menard (jimm@io.com), May 2001.
|
144
|
-
def Graphics.sphere(iterations = DEFAULT_SPHERE_ITERATIONS,
|
145
|
-
counterClockwise = true)
|
146
|
-
if @@spheres[iterations].nil?
|
147
|
-
@@spheres[iterations] = buildSphere(iterations, OCTAHEDRON)
|
148
|
-
end
|
149
|
-
sphere = @@spheres[iterations]
|
150
|
-
|
151
|
-
Begin(TRIANGLES)
|
152
|
-
sphere.each { | triangle |
|
153
|
-
triangle.points.each { | p |
|
154
|
-
Vertex(p.x, p.y, p.z) if counterClockwise
|
155
|
-
Vertex(p.z, p.y, p.x) if !counterClockwise
|
156
|
-
}
|
157
|
-
}
|
158
|
-
End()
|
159
|
-
end
|
160
|
-
|
161
|
-
#
|
162
|
-
# Subdivide each triangle in the oldObj approximation and normalize
|
163
|
-
# the new points thus generated to lie on the surface of the unit
|
164
|
-
# sphere.
|
165
|
-
# Each input triangle with vertices labelled [0,1,2] as shown
|
166
|
-
# below will be turned into four new triangles:
|
167
|
-
#
|
168
|
-
# Make new points
|
169
|
-
# a = (0+2)/2
|
170
|
-
# b = (0+1)/2
|
171
|
-
# c = (1+2)/2
|
172
|
-
# 1
|
173
|
-
# /\ Normalize a, b, c
|
174
|
-
# / \
|
175
|
-
# b/____\ c Construct new counter-clockwise triangles
|
176
|
-
# /\ /\ [a,b,0]
|
177
|
-
# / \ / \ [c,1,b]
|
178
|
-
# /____\/____\ [c,b,a]
|
179
|
-
# 0 a 2 [2,c,a]
|
180
|
-
#
|
181
|
-
#
|
182
|
-
# The normalize step (which makes each point a, b, c unit distance
|
183
|
-
# from the origin) is where we can modify the sphere's shape.
|
184
|
-
#
|
185
|
-
def Graphics.buildSphere(iterations, sphere)
|
186
|
-
oldObj = sphere
|
187
|
-
# Subdivide each starting triangle (maxlevel - 1) times
|
188
|
-
iterations -= 1
|
189
|
-
iterations.times {
|
190
|
-
# Create a new object. Allocate 4 * the number of points in the
|
191
|
-
# the current approximation.
|
192
|
-
newObj = Array.new(oldObj.length * 4)
|
193
|
-
|
194
|
-
j = 0
|
195
|
-
oldObj.each { | oldt |
|
196
|
-
# New midpoints
|
197
|
-
a = Point.midpoint(oldt.points[0], oldt.points[2])
|
198
|
-
a.normalize!()
|
199
|
-
b = Point.midpoint(oldt.points[0], oldt.points[1])
|
200
|
-
b.normalize!()
|
201
|
-
c = Point.midpoint(oldt.points[1], oldt.points[2])
|
202
|
-
c.normalize!()
|
203
|
-
|
204
|
-
# New triangeles. Their vertices are counter-clockwise.
|
205
|
-
newObj[j] = Triangle.new(a, b, oldt.points[0])
|
206
|
-
j += 1
|
207
|
-
newObj[j] = Triangle.new(c, oldt.points[1], b)
|
208
|
-
j += 1
|
209
|
-
newObj[j] = Triangle.new(c, b, a)
|
210
|
-
j += 1
|
211
|
-
newObj[j] = Triangle.new(oldt.points[2], c, a)
|
212
|
-
j += 1
|
213
|
-
}
|
214
|
-
|
215
|
-
# Continue subdividing new triangles
|
216
|
-
oldObj = newObj
|
217
|
-
}
|
218
|
-
return oldObj
|
219
|
-
end
|
220
|
-
|
221
|
-
# Creates a circle in the X/Z plane. To have the circle's normal
|
222
|
-
# point down (-Y), specify clockwise instead of counter-clockwise.
|
223
|
-
# To create the circle in another plane, call OpenGL's Rotate() method
|
224
|
-
# before calling this.
|
225
|
-
def Graphics.circle(iterations = DEFAULT_SPHERE_ITERATIONS,
|
226
|
-
counterClockwise = true)
|
227
|
-
if @@circles[iterations].nil?
|
228
|
-
@@circles[iterations] = buildCircle(iterations, SQUARE)
|
229
|
-
end
|
230
|
-
circle = @@circles[iterations]
|
231
|
-
|
232
|
-
Begin(TRIANGLE_FAN)
|
233
|
-
Vertex(0, 0, 0)
|
234
|
-
if counterClockwise
|
235
|
-
circle.each { | p | Vertex(p.x, 0, p.z) }
|
236
|
-
else
|
237
|
-
circle.reverse.each { | p | Vertex(p.x, 0, p.z) }
|
238
|
-
end
|
239
|
-
End()
|
240
|
-
end
|
241
|
-
|
242
|
-
# Different than buildSphere because we are creating triangles to
|
243
|
-
# be used in an OpenGL TRIANGLE_FAN operation. Thus the first point
|
244
|
-
# (the center) is always inviolate. We create new points between
|
245
|
-
# the remaining points.
|
246
|
-
def Graphics.buildCircle(iterations, circle)
|
247
|
-
oldObj = circle
|
248
|
-
# Subdivide each starting line segment (maxlevel - 1) times
|
249
|
-
iterations -= 1
|
250
|
-
iterations.times {
|
251
|
-
# Create a new object. Allocate 2 * the number of points in the
|
252
|
-
# the current approximation. Subtract one because the last point
|
253
|
-
# (same as the first point) is simply copied.
|
254
|
-
newObj = Array.new(oldObj.length * 2 - 1)
|
255
|
-
|
256
|
-
prevP = nil
|
257
|
-
j = 0
|
258
|
-
oldObj.each { | p |
|
259
|
-
if !prevP.nil?
|
260
|
-
newObj[j] = prevP
|
261
|
-
j += 1
|
262
|
-
|
263
|
-
# New midpoint
|
264
|
-
a = Point.midpoint(prevP, p)
|
265
|
-
a.normalize!()
|
266
|
-
newObj[j] = a
|
267
|
-
j += 1
|
268
|
-
end
|
269
|
-
prevP = p
|
270
|
-
}
|
271
|
-
newObj[j] = prevP # Copy last point
|
272
|
-
|
273
|
-
# Continue subdividing new triangles
|
274
|
-
oldObj = newObj
|
275
|
-
}
|
276
|
-
return oldObj
|
277
|
-
end
|
278
|
-
end
|
1
|
+
#
|
2
|
+
# Copyright (c) 2001 by Jim Menard <jimm@io.com>
|
3
|
+
#
|
4
|
+
# Released under the same license as Ruby. See
|
5
|
+
# http://www.ruby-lang.org/en/LICENSE.txt.
|
6
|
+
#
|
7
|
+
|
8
|
+
require './Triangle'
|
9
|
+
|
10
|
+
class Graphics
|
11
|
+
|
12
|
+
DEFAULT_SPHERE_ITERATIONS = 3
|
13
|
+
|
14
|
+
XPLUS = Point.new(1, 0, 0) # X
|
15
|
+
XMINUS = Point.new(-1, 0, 0)# -X
|
16
|
+
YPLUS = Point.new(0, 1, 0) # Y
|
17
|
+
YMINUS = Point.new(0, -1, 0)# -Y
|
18
|
+
ZPLUS = Point.new(0, 0, 1) # Z
|
19
|
+
ZMINUS = Point.new(0, 0, -1)# -Z
|
20
|
+
|
21
|
+
# defined w/counter-clockwise triangles
|
22
|
+
OCTAHEDRON = [
|
23
|
+
Triangle.new(YPLUS, ZPLUS, XPLUS),
|
24
|
+
Triangle.new(XMINUS, ZPLUS, YPLUS),
|
25
|
+
Triangle.new(YMINUS, ZPLUS, XMINUS),
|
26
|
+
Triangle.new(XPLUS, ZPLUS, YMINUS),
|
27
|
+
Triangle.new(ZMINUS, YPLUS, XPLUS),
|
28
|
+
Triangle.new(ZMINUS, XMINUS , YPLUS),
|
29
|
+
Triangle.new(ZMINUS, YMINUS , XMINUS),
|
30
|
+
Triangle.new(ZMINUS, XPLUS, YMINUS)
|
31
|
+
]
|
32
|
+
# Defines counter-clockwise points used in OpenGL TRIANGLE_STRIP to
|
33
|
+
# create a circle on the X/Z plane. Don't include center point here;
|
34
|
+
# It is added when outputting the circle.
|
35
|
+
SQUARE = [
|
36
|
+
XPLUS, ZMINUS, XMINUS, ZPLUS, XPLUS
|
37
|
+
]
|
38
|
+
|
39
|
+
@@spheres = Hash.new()
|
40
|
+
@@circles = Hash.new()
|
41
|
+
|
42
|
+
def Graphics.radiansToDegrees(rad)
|
43
|
+
return rad * 180.0 / Math::PI
|
44
|
+
end
|
45
|
+
|
46
|
+
def Graphics.degreesToRadians(deg)
|
47
|
+
return deg * Math::PI / 180.0
|
48
|
+
end
|
49
|
+
|
50
|
+
# Given a vector, return a point containing x, y, z rotation angles.
|
51
|
+
#
|
52
|
+
# atan2(x, y) = the angle formed with the x axis by the ray from the
|
53
|
+
# origin to the point {x,y}
|
54
|
+
def Graphics.rotations(v)
|
55
|
+
return Point::ORIGIN.dup() if v.nil?
|
56
|
+
return v if v == Point::ORIGIN
|
57
|
+
|
58
|
+
x = Math.atan2(v.y, v.z)
|
59
|
+
y = Math.atan2(v.z, v.x)
|
60
|
+
z = Math.atan2(v.y, v.x)
|
61
|
+
|
62
|
+
rot = Point.new(z, x, y)
|
63
|
+
rot.add(Math::PI).multiplyBy(180.0).divideBy(Math::PI)
|
64
|
+
|
65
|
+
rot.x = rot.x.to_i
|
66
|
+
rot.y = rot.y.to_i
|
67
|
+
rot.z = rot.z.to_i
|
68
|
+
|
69
|
+
return rot
|
70
|
+
end
|
71
|
+
|
72
|
+
# Build box from corners. All faces are counter-clockwise.
|
73
|
+
def Graphics.boxFromCorners(p0, p1)
|
74
|
+
pa = p0.dup()
|
75
|
+
pb = p1.dup()
|
76
|
+
|
77
|
+
# Make sure all coords of pa are < all coords of pb
|
78
|
+
if pa.x > pb.x
|
79
|
+
tmp = pa.x; pa.x = pb.x; pb.x = tmp
|
80
|
+
end
|
81
|
+
if pa.y > pb.y
|
82
|
+
tmp = pa.y; pa.y = pb.y; pb.y = tmp
|
83
|
+
end
|
84
|
+
if pa.z > pb.z
|
85
|
+
tmp = pa.z; pa.z = pb.z; pb.z = tmp
|
86
|
+
end
|
87
|
+
|
88
|
+
Begin(QUAD_STRIP)
|
89
|
+
|
90
|
+
# top
|
91
|
+
Vertex(pb.x, pb.y, pa.z)
|
92
|
+
Vertex(pa.x, pb.y, pa.z)
|
93
|
+
# top/front
|
94
|
+
Vertex(pb.x, pb.y, pb.z)
|
95
|
+
Vertex(pa.x, pb.y, pb.z)
|
96
|
+
# front/bottom
|
97
|
+
Vertex(pb.x, pa.y, pb.z)
|
98
|
+
Vertex(pa.x, pa.y, pb.z)
|
99
|
+
# bottom/back
|
100
|
+
Vertex(pb.x, pa.y, pa.z)
|
101
|
+
Vertex(pa.x, pa.y, pa.z)
|
102
|
+
# back/top
|
103
|
+
Vertex(pb.x, pb.y, pa.z)
|
104
|
+
Vertex(pa.x, pb.y, pa.z)
|
105
|
+
|
106
|
+
End()
|
107
|
+
|
108
|
+
Begin(QUADS)
|
109
|
+
|
110
|
+
# left
|
111
|
+
Vertex(pa.x, pa.y, pb.z)
|
112
|
+
Vertex(pa.x, pa.y, pa.z)
|
113
|
+
Vertex(pa.x, pb.y, pa.z)
|
114
|
+
Vertex(pa.x, pb.y, pb.z)
|
115
|
+
|
116
|
+
# right
|
117
|
+
Vertex(pb.x, pa.y, pb.z)
|
118
|
+
Vertex(pb.x, pa.y, pa.z)
|
119
|
+
Vertex(pb.x, pb.y, pa.z)
|
120
|
+
Vertex(pb.x, pb.y, pb.z)
|
121
|
+
|
122
|
+
End()
|
123
|
+
end
|
124
|
+
|
125
|
+
# sphere() (and buildSphere()) - generate a triangle mesh approximating
|
126
|
+
# a sphere by recursive subdivision. First approximation is an
|
127
|
+
# octahedron; each level of refinement increases the number of
|
128
|
+
# triangles by a factor of 4.
|
129
|
+
#
|
130
|
+
# Level 3 (128 triangles) is a good tradeoff if gouraud shading is used
|
131
|
+
# to render the database.
|
132
|
+
#
|
133
|
+
# Usage: sphere [level] [counterClockwise]
|
134
|
+
#
|
135
|
+
# The value level is an integer >= 1 setting the recursion level
|
136
|
+
# (default = DEFAULT_SPHERE_ITERATIONS).
|
137
|
+
# The boolean counterClockwise causes triangles to be generated
|
138
|
+
# with vertices in counterclockwise order as viewed from
|
139
|
+
# the outside in a RHS coordinate system. The default is
|
140
|
+
# counter-clockwise.
|
141
|
+
#
|
142
|
+
# @author Jon Leech (leech@cs.unc.edu) 3/24/89 (C version)
|
143
|
+
# Ruby version by Jim Menard (jimm@io.com), May 2001.
|
144
|
+
def Graphics.sphere(iterations = DEFAULT_SPHERE_ITERATIONS,
|
145
|
+
counterClockwise = true)
|
146
|
+
if @@spheres[iterations].nil?
|
147
|
+
@@spheres[iterations] = buildSphere(iterations, OCTAHEDRON)
|
148
|
+
end
|
149
|
+
sphere = @@spheres[iterations]
|
150
|
+
|
151
|
+
Begin(TRIANGLES)
|
152
|
+
sphere.each { | triangle |
|
153
|
+
triangle.points.each { | p |
|
154
|
+
Vertex(p.x, p.y, p.z) if counterClockwise
|
155
|
+
Vertex(p.z, p.y, p.x) if !counterClockwise
|
156
|
+
}
|
157
|
+
}
|
158
|
+
End()
|
159
|
+
end
|
160
|
+
|
161
|
+
#
|
162
|
+
# Subdivide each triangle in the oldObj approximation and normalize
|
163
|
+
# the new points thus generated to lie on the surface of the unit
|
164
|
+
# sphere.
|
165
|
+
# Each input triangle with vertices labelled [0,1,2] as shown
|
166
|
+
# below will be turned into four new triangles:
|
167
|
+
#
|
168
|
+
# Make new points
|
169
|
+
# a = (0+2)/2
|
170
|
+
# b = (0+1)/2
|
171
|
+
# c = (1+2)/2
|
172
|
+
# 1
|
173
|
+
# /\ Normalize a, b, c
|
174
|
+
# / \
|
175
|
+
# b/____\ c Construct new counter-clockwise triangles
|
176
|
+
# /\ /\ [a,b,0]
|
177
|
+
# / \ / \ [c,1,b]
|
178
|
+
# /____\/____\ [c,b,a]
|
179
|
+
# 0 a 2 [2,c,a]
|
180
|
+
#
|
181
|
+
#
|
182
|
+
# The normalize step (which makes each point a, b, c unit distance
|
183
|
+
# from the origin) is where we can modify the sphere's shape.
|
184
|
+
#
|
185
|
+
def Graphics.buildSphere(iterations, sphere)
|
186
|
+
oldObj = sphere
|
187
|
+
# Subdivide each starting triangle (maxlevel - 1) times
|
188
|
+
iterations -= 1
|
189
|
+
iterations.times {
|
190
|
+
# Create a new object. Allocate 4 * the number of points in the
|
191
|
+
# the current approximation.
|
192
|
+
newObj = Array.new(oldObj.length * 4)
|
193
|
+
|
194
|
+
j = 0
|
195
|
+
oldObj.each { | oldt |
|
196
|
+
# New midpoints
|
197
|
+
a = Point.midpoint(oldt.points[0], oldt.points[2])
|
198
|
+
a.normalize!()
|
199
|
+
b = Point.midpoint(oldt.points[0], oldt.points[1])
|
200
|
+
b.normalize!()
|
201
|
+
c = Point.midpoint(oldt.points[1], oldt.points[2])
|
202
|
+
c.normalize!()
|
203
|
+
|
204
|
+
# New triangeles. Their vertices are counter-clockwise.
|
205
|
+
newObj[j] = Triangle.new(a, b, oldt.points[0])
|
206
|
+
j += 1
|
207
|
+
newObj[j] = Triangle.new(c, oldt.points[1], b)
|
208
|
+
j += 1
|
209
|
+
newObj[j] = Triangle.new(c, b, a)
|
210
|
+
j += 1
|
211
|
+
newObj[j] = Triangle.new(oldt.points[2], c, a)
|
212
|
+
j += 1
|
213
|
+
}
|
214
|
+
|
215
|
+
# Continue subdividing new triangles
|
216
|
+
oldObj = newObj
|
217
|
+
}
|
218
|
+
return oldObj
|
219
|
+
end
|
220
|
+
|
221
|
+
# Creates a circle in the X/Z plane. To have the circle's normal
|
222
|
+
# point down (-Y), specify clockwise instead of counter-clockwise.
|
223
|
+
# To create the circle in another plane, call OpenGL's Rotate() method
|
224
|
+
# before calling this.
|
225
|
+
def Graphics.circle(iterations = DEFAULT_SPHERE_ITERATIONS,
|
226
|
+
counterClockwise = true)
|
227
|
+
if @@circles[iterations].nil?
|
228
|
+
@@circles[iterations] = buildCircle(iterations, SQUARE)
|
229
|
+
end
|
230
|
+
circle = @@circles[iterations]
|
231
|
+
|
232
|
+
Begin(TRIANGLE_FAN)
|
233
|
+
Vertex(0, 0, 0)
|
234
|
+
if counterClockwise
|
235
|
+
circle.each { | p | Vertex(p.x, 0, p.z) }
|
236
|
+
else
|
237
|
+
circle.reverse.each { | p | Vertex(p.x, 0, p.z) }
|
238
|
+
end
|
239
|
+
End()
|
240
|
+
end
|
241
|
+
|
242
|
+
# Different than buildSphere because we are creating triangles to
|
243
|
+
# be used in an OpenGL TRIANGLE_FAN operation. Thus the first point
|
244
|
+
# (the center) is always inviolate. We create new points between
|
245
|
+
# the remaining points.
|
246
|
+
def Graphics.buildCircle(iterations, circle)
|
247
|
+
oldObj = circle
|
248
|
+
# Subdivide each starting line segment (maxlevel - 1) times
|
249
|
+
iterations -= 1
|
250
|
+
iterations.times {
|
251
|
+
# Create a new object. Allocate 2 * the number of points in the
|
252
|
+
# the current approximation. Subtract one because the last point
|
253
|
+
# (same as the first point) is simply copied.
|
254
|
+
newObj = Array.new(oldObj.length * 2 - 1)
|
255
|
+
|
256
|
+
prevP = nil
|
257
|
+
j = 0
|
258
|
+
oldObj.each { | p |
|
259
|
+
if !prevP.nil?
|
260
|
+
newObj[j] = prevP
|
261
|
+
j += 1
|
262
|
+
|
263
|
+
# New midpoint
|
264
|
+
a = Point.midpoint(prevP, p)
|
265
|
+
a.normalize!()
|
266
|
+
newObj[j] = a
|
267
|
+
j += 1
|
268
|
+
end
|
269
|
+
prevP = p
|
270
|
+
}
|
271
|
+
newObj[j] = prevP # Copy last point
|
272
|
+
|
273
|
+
# Continue subdividing new triangles
|
274
|
+
oldObj = newObj
|
275
|
+
}
|
276
|
+
return oldObj
|
277
|
+
end
|
278
|
+
end
|