fxruby 1.6.50 → 1.6.51
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
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/binary.yml +17 -0
- data/.github/workflows/ci.yml +13 -2
- data/Gemfile +7 -2
- data/History.md +14 -0
- data/Rakefile +28 -46
- data/doap.rdf +2 -2
- data/docs/Fox/Canvas/CanvasError.html +2 -2
- data/docs/Fox/Canvas/CircleShape.html +2 -2
- data/docs/Fox/Canvas/ImageShape.html +2 -2
- data/docs/Fox/Canvas/LineShape.html +2 -2
- data/docs/Fox/Canvas/PolygonShape.html +2 -2
- data/docs/Fox/Canvas/RectangleShape.html +2 -2
- data/docs/Fox/Canvas/SelectionPolicy.html +2 -2
- data/docs/Fox/Canvas/Shape.html +3 -3
- data/docs/Fox/Canvas/ShapeCanvas.html +2 -2
- data/docs/Fox/Canvas/ShapeGroup.html +2 -2
- data/docs/Fox/Canvas/SingleSelectionPolicy.html +2 -2
- data/docs/Fox/Canvas/TextShape.html +7 -9
- data/docs/Fox/Canvas.html +3 -3
- data/docs/Fox/FTNonModal.html +2 -2
- data/docs/Fox/FX4Splitter.html +41 -41
- data/docs/Fox/FX7Segment.html +5 -5
- data/docs/Fox/FXAccelTable.html +2 -2
- data/docs/Fox/FXApp.html +54 -54
- data/docs/Fox/FXArc.html +2 -2
- data/docs/Fox/FXArrowButton.html +22 -22
- data/docs/Fox/FXBMPIcon.html +10 -10
- data/docs/Fox/FXBMPImage.html +9 -9
- data/docs/Fox/FXBitmap.html +7 -7
- data/docs/Fox/FXBitmapFrame.html +3 -3
- data/docs/Fox/FXBitmapView.html +4 -4
- data/docs/Fox/FXButton.html +21 -21
- data/docs/Fox/FXCURCursor.html +2 -2
- data/docs/Fox/FXCalendar.html +4 -4
- data/docs/Fox/FXCanvas.html +7 -7
- data/docs/Fox/FXCheckButton.html +13 -13
- data/docs/Fox/FXChoiceBox.html +20 -20
- data/docs/Fox/FXColor.html +2 -2
- data/docs/Fox/FXColorBar.html +10 -10
- data/docs/Fox/FXColorDialog.html +7 -7
- data/docs/Fox/FXColorItem.html +2 -2
- data/docs/Fox/FXColorList.html +2 -2
- data/docs/Fox/FXColorRing.html +7 -7
- data/docs/Fox/FXColorSelector.html +36 -36
- data/docs/Fox/FXColorWell.html +19 -19
- data/docs/Fox/FXColorWheel.html +20 -20
- data/docs/Fox/FXComboBox.html +31 -31
- data/docs/Fox/FXComboTableItem.html +2 -2
- data/docs/Fox/FXCommand.html +2 -2
- data/docs/Fox/FXComposite.html +5 -5
- data/docs/Fox/FXCursor.html +14 -14
- data/docs/Fox/FXDC.html +207 -207
- data/docs/Fox/FXDCPrint.html +2 -2
- data/docs/Fox/FXDCWindow.html +2 -2
- data/docs/Fox/FXDataTarget.html +8 -8
- data/docs/Fox/FXDebugTarget.html +3 -3
- data/docs/Fox/FXDelegator.html +2 -2
- data/docs/Fox/FXDial.html +28 -28
- data/docs/Fox/FXDialogBox.html +5 -5
- data/docs/Fox/FXDict.html +2 -2
- data/docs/Fox/FXDirBox.html +7 -7
- data/docs/Fox/FXDirDialog.html +2 -2
- data/docs/Fox/FXDirItem.html +2 -2
- data/docs/Fox/FXDirList.html +19 -19
- data/docs/Fox/FXDirSelector.html +15 -15
- data/docs/Fox/FXDockBar.html +27 -27
- data/docs/Fox/FXDockHandler.html +5 -5
- data/docs/Fox/FXDockSite.html +14 -14
- data/docs/Fox/FXDockTitle.html +2 -2
- data/docs/Fox/FXDocument.html +5 -5
- data/docs/Fox/FXDragCorner.html +2 -2
- data/docs/Fox/FXDrawable.html +5 -5
- data/docs/Fox/FXDriveBox.html +5 -5
- data/docs/Fox/FXEvent.html +62 -60
- data/docs/Fox/FXExtentd.html +2 -2
- data/docs/Fox/FXExtentf.html +2 -2
- data/docs/Fox/FXFileAssoc.html +2 -2
- data/docs/Fox/FXFileDialog.html +32 -32
- data/docs/Fox/FXFileDict.html +7 -7
- data/docs/Fox/FXFileItem.html +2 -2
- data/docs/Fox/FXFileList.html +27 -27
- data/docs/Fox/FXFileSelector.html +35 -35
- data/docs/Fox/FXFileStream.html +6 -6
- data/docs/Fox/FXFoldingItem.html +2 -2
- data/docs/Fox/FXFoldingList.html +41 -41
- data/docs/Fox/FXFont.html +172 -170
- data/docs/Fox/FXFontDesc.html +2 -2
- data/docs/Fox/FXFontDialog.html +2 -2
- data/docs/Fox/FXFontSelector.html +14 -14
- data/docs/Fox/FXFrame.html +4 -4
- data/docs/Fox/FXGIFCursor.html +2 -2
- data/docs/Fox/FXGIFIcon.html +10 -10
- data/docs/Fox/FXGIFImage.html +9 -9
- data/docs/Fox/FXGLCanvas.html +2 -2
- data/docs/Fox/FXGLCone.html +2 -2
- data/docs/Fox/FXGLContext.html +2 -2
- data/docs/Fox/FXGLCube.html +2 -2
- data/docs/Fox/FXGLCylinder.html +2 -2
- data/docs/Fox/FXGLGroup.html +2 -2
- data/docs/Fox/FXGLLine.html +2 -2
- data/docs/Fox/FXGLObject.html +14 -14
- data/docs/Fox/FXGLPoint.html +2 -2
- data/docs/Fox/FXGLShape.html +26 -26
- data/docs/Fox/FXGLSphere.html +2 -2
- data/docs/Fox/FXGLViewer.html +74 -74
- data/docs/Fox/FXGLVisual.html +2 -2
- data/docs/Fox/FXGradient.html +2 -2
- data/docs/Fox/FXGradientBar.html +34 -34
- data/docs/Fox/FXGroupBox.html +7 -7
- data/docs/Fox/FXHeader.html +20 -20
- data/docs/Fox/FXHeaderItem.html +19 -19
- data/docs/Fox/FXHiliteStyle.html +2 -2
- data/docs/Fox/FXHorizontalFrame.html +15 -15
- data/docs/Fox/FXHorizontalSeparator.html +13 -13
- data/docs/Fox/FXICOIcon.html +10 -10
- data/docs/Fox/FXICOImage.html +9 -9
- data/docs/Fox/FXIcon.html +10 -10
- data/docs/Fox/FXIconDict.html +2 -2
- data/docs/Fox/FXIconItem.html +2 -2
- data/docs/Fox/FXIconList.html +43 -43
- data/docs/Fox/FXIconSource.html +2 -2
- data/docs/Fox/FXId.html +2 -2
- data/docs/Fox/FXImage.html +120 -297
- data/docs/Fox/FXImageFrame.html +14 -14
- data/docs/Fox/FXImageView.html +13 -13
- data/docs/Fox/FXInputDialog.html +7 -7
- data/docs/Fox/FXIrb.html +2 -2
- data/docs/Fox/FXJPGIcon.html +11 -11
- data/docs/Fox/FXJPGImage.html +10 -10
- data/docs/Fox/FXKnob.html +17 -17
- data/docs/Fox/FXLabel.html +25 -25
- data/docs/Fox/FXLight.html +2 -2
- data/docs/Fox/FXList.html +29 -29
- data/docs/Fox/FXListBox.html +8 -8
- data/docs/Fox/FXListItem.html +2 -2
- data/docs/Fox/FXMDIChild.html +21 -21
- data/docs/Fox/FXMDIClient.html +224 -28
- data/docs/Fox/FXMDIDeleteButton.html +2 -2
- data/docs/Fox/FXMDIMaximizeButton.html +2 -2
- data/docs/Fox/FXMDIMenu.html +2 -2
- data/docs/Fox/FXMDIMinimizeButton.html +2 -2
- data/docs/Fox/FXMDIRestoreButton.html +2 -2
- data/docs/Fox/FXMDIWindowButton.html +2 -2
- data/docs/Fox/FXMainWindow.html +4 -4
- data/docs/Fox/FXMaterial.html +2 -2
- data/docs/Fox/FXMatrix.html +5 -5
- data/docs/Fox/FXMemoryBuffer.html +4 -4
- data/docs/Fox/FXMemoryStream.html +8 -8
- data/docs/Fox/FXMenuBar.html +2 -2
- data/docs/Fox/FXMenuButton.html +24 -24
- data/docs/Fox/FXMenuCaption.html +5 -5
- data/docs/Fox/FXMenuCascade.html +2 -2
- data/docs/Fox/FXMenuCheck.html +4 -4
- data/docs/Fox/FXMenuCommand.html +4 -4
- data/docs/Fox/FXMenuPane.html +2 -2
- data/docs/Fox/FXMenuRadio.html +4 -4
- data/docs/Fox/FXMenuSeparator.html +2 -2
- data/docs/Fox/FXMenuTitle.html +7 -7
- data/docs/Fox/FXMessageBox.html +21 -21
- data/docs/Fox/FXObject.html +2 -2
- data/docs/Fox/FXOption.html +8 -8
- data/docs/Fox/FXOptionMenu.html +8 -8
- data/docs/Fox/FXPCXIcon.html +10 -10
- data/docs/Fox/FXPCXImage.html +9 -9
- data/docs/Fox/FXPNGIcon.html +10 -10
- data/docs/Fox/FXPNGImage.html +9 -9
- data/docs/Fox/FXPPMIcon.html +10 -10
- data/docs/Fox/FXPPMImage.html +9 -9
- data/docs/Fox/FXPSBounds.html +2 -2
- data/docs/Fox/FXPacker.html +2 -2
- data/docs/Fox/FXPicker.html +5 -5
- data/docs/Fox/FXPopup.html +6 -6
- data/docs/Fox/FXPrintDialog.html +23 -23
- data/docs/Fox/FXPrinter.html +22 -22
- data/docs/Fox/FXProgressBar.html +8 -8
- data/docs/Fox/FXProgressDialog.html +6 -6
- data/docs/Fox/FXPseudoKeyboard.html +2 -2
- data/docs/Fox/FXPseudoMouse.html +2 -2
- data/docs/Fox/FXPseudoTarget.html +2 -2
- data/docs/Fox/FXQuatd.html +19 -19
- data/docs/Fox/FXQuatf.html +24 -24
- data/docs/Fox/FXRGBIcon.html +10 -10
- data/docs/Fox/FXRGBImage.html +9 -9
- data/docs/Fox/FXRadioButton.html +12 -12
- data/docs/Fox/FXRanged.html +2 -2
- data/docs/Fox/FXRangef.html +2 -2
- data/docs/Fox/FXRealSlider.html +40 -40
- data/docs/Fox/FXRealSpinner.html +32 -32
- data/docs/Fox/FXRecentFiles.html +17 -17
- data/docs/Fox/FXRectangle.html +15 -15
- data/docs/Fox/FXRegion.html +2 -2
- data/docs/Fox/FXRegistry.html +2 -2
- data/docs/Fox/FXReplaceDialog.html +29 -29
- data/docs/Fox/FXRootWindow.html +5 -5
- data/docs/Fox/FXRuler.html +31 -31
- data/docs/Fox/FXRulerView.html +2 -2
- data/docs/Fox/FXScintilla.html +9116 -2763
- data/docs/Fox/FXScrollArea.html +21 -21
- data/docs/Fox/FXScrollBar.html +31 -31
- data/docs/Fox/FXScrollCorner.html +2 -2
- data/docs/Fox/FXScrollPane.html +6 -6
- data/docs/Fox/FXScrollWindow.html +9 -9
- data/docs/Fox/FXSearchDialog.html +11 -11
- data/docs/Fox/FXSegment.html +2 -2
- data/docs/Fox/FXSeparator.html +7 -7
- data/docs/Fox/FXSettings.html +56 -56
- data/docs/Fox/FXShell.html +2 -2
- data/docs/Fox/FXShutter.html +24 -24
- data/docs/Fox/FXShutterItem.html +19 -19
- data/docs/Fox/FXSize.html +12 -12
- data/docs/Fox/FXSlider.html +40 -40
- data/docs/Fox/FXSphered.html +2 -2
- data/docs/Fox/FXSpheref.html +2 -2
- data/docs/Fox/FXSpinner.html +31 -31
- data/docs/Fox/FXSplashScreen.html +3 -3
- data/docs/Fox/FXSplashWindow.html +7 -7
- data/docs/Fox/FXSplitter.html +22 -22
- data/docs/Fox/FXSpring.html +17 -17
- data/docs/Fox/FXStatusBar.html +17 -17
- data/docs/Fox/FXStatusLine.html +8 -8
- data/docs/Fox/FXStream.html +26 -26
- data/docs/Fox/FXStreamAllocError.html +2 -2
- data/docs/Fox/FXStreamEndError.html +2 -2
- data/docs/Fox/FXStreamError.html +2 -2
- data/docs/Fox/FXStreamFailureError.html +2 -2
- data/docs/Fox/FXStreamFormatError.html +2 -2
- data/docs/Fox/FXStreamFullError.html +2 -2
- data/docs/Fox/FXStreamNoReadError.html +2 -2
- data/docs/Fox/FXStreamNoWriteError.html +2 -2
- data/docs/Fox/FXStreamUnknownError.html +2 -2
- data/docs/Fox/FXStringDict.html +2 -2
- data/docs/Fox/FXSwitcher.html +30 -30
- data/docs/Fox/FXTGAIcon.html +10 -10
- data/docs/Fox/FXTGAImage.html +9 -9
- data/docs/Fox/FXTIFIcon.html +10 -10
- data/docs/Fox/FXTIFImage.html +9 -9
- data/docs/Fox/FXTabBar.html +37 -37
- data/docs/Fox/FXTabBook.html +15 -15
- data/docs/Fox/FXTabItem.html +27 -27
- data/docs/Fox/FXTable.html +89 -89
- data/docs/Fox/FXTableItem.html +6 -6
- data/docs/Fox/FXTablePos.html +2 -2
- data/docs/Fox/FXTableRange.html +2 -2
- data/docs/Fox/FXText.html +115 -115
- data/docs/Fox/FXTextChange.html +2 -2
- data/docs/Fox/FXTextField.html +55 -55
- data/docs/Fox/FXToggleButton.html +31 -31
- data/docs/Fox/FXToolBar.html +15 -15
- data/docs/Fox/FXToolBarGrip.html +14 -14
- data/docs/Fox/FXToolBarShell.html +11 -11
- data/docs/Fox/FXToolBarTab.html +21 -21
- data/docs/Fox/FXToolTip.html +12 -10
- data/docs/Fox/FXTopWindow.html +34 -34
- data/docs/Fox/FXTranslator.html +2 -2
- data/docs/Fox/FXTreeItem.html +2 -2
- data/docs/Fox/FXTreeList.html +41 -41
- data/docs/Fox/FXTreeListBox.html +23 -23
- data/docs/Fox/FXTriStateButton.html +21 -21
- data/docs/Fox/FXUndoList.html +3 -3
- data/docs/Fox/FXVec2d.html +2 -2
- data/docs/Fox/FXVec2f.html +2 -2
- data/docs/Fox/FXVec3d.html +2 -2
- data/docs/Fox/FXVec3f.html +2 -2
- data/docs/Fox/FXVec4d.html +2 -2
- data/docs/Fox/FXVec4f.html +2 -2
- data/docs/Fox/FXVerticalFrame.html +15 -15
- data/docs/Fox/FXVerticalSeparator.html +13 -13
- data/docs/Fox/FXViewport.html +2 -2
- data/docs/Fox/FXVisual.html +24 -24
- data/docs/Fox/FXWindow.html +143 -143
- data/docs/Fox/FXWizard.html +5 -5
- data/docs/Fox/FXXBMIcon.html +11 -11
- data/docs/Fox/FXXBMImage.html +10 -10
- data/docs/Fox/FXXPMIcon.html +10 -10
- data/docs/Fox/FXXPMImage.html +9 -9
- data/docs/Fox/NotifyHeader.html +2 -2
- data/docs/Fox/SCNotification.html +2 -2
- data/docs/Fox/TextRange.html +2 -2
- data/docs/Fox.html +89 -89
- data/docs/IRB.html +2 -2
- data/docs/Responder.html +2 -2
- data/docs/Responder2.html +2 -2
- data/docs/_index.html +2 -2
- data/docs/css/style.css +2 -15
- data/docs/file.History.html +1432 -842
- data/docs/file.README.html +9 -9
- data/docs/index.html +94 -53
- data/docs/js/app.js +91 -40
- data/docs/js/full_list.js +22 -20
- data/docs/method_list.html +2854 -2286
- data/docs/top-level-namespace.html +2 -2
- data/examples/canvasdemo.rb +4 -4
- data/examples/iconlist.rb +79 -4
- data/examples/inputs.rb +1 -1
- data/examples/rmagick.rb +9 -9
- data/ext/fox16_c/FXRbApp.cpp +2 -1
- data/ext/fox16_c/FXRbDataTarget.cpp +1 -0
- data/ext/fox16_c/FXRbGLViewer.cpp +1 -0
- data/ext/fox16_c/FXRbObjRegistry.cpp +12 -5
- data/ext/fox16_c/FXRuby.cpp +57 -37
- data/ext/fox16_c/core_wrap.cpp +2593 -2155
- data/ext/fox16_c/dc_wrap.cpp +1033 -707
- data/ext/fox16_c/dialogs_wrap.cpp +1865 -1513
- data/ext/fox16_c/extconf.rb +11 -8
- data/ext/fox16_c/frames_wrap.cpp +3257 -2876
- data/ext/fox16_c/fx3d_wrap.cpp +2170 -1780
- data/ext/fox16_c/gvl_wrappers.cpp +1 -0
- data/ext/fox16_c/iconlist_wrap.cpp +1209 -882
- data/ext/fox16_c/icons_wrap.cpp +1132 -775
- data/ext/fox16_c/image_wrap.cpp +1116 -756
- data/ext/fox16_c/impl.cpp +1 -0
- data/ext/fox16_c/include/FXRbDCWindow.h +1 -1
- data/ext/fox16_c/include/FXRuby.h +6 -6
- data/ext/fox16_c/label_wrap.cpp +1702 -1354
- data/ext/fox16_c/layout_wrap.cpp +1752 -1392
- data/ext/fox16_c/list_wrap.cpp +899 -572
- data/ext/fox16_c/make_impl.rb +1 -0
- data/ext/fox16_c/markfuncs.cpp +1 -0
- data/ext/fox16_c/mdi_wrap.cpp +1220 -881
- data/ext/fox16_c/menu_wrap.cpp +1402 -1057
- data/ext/fox16_c/scintilla_wrap.cpp +658 -337
- data/ext/fox16_c/swigruby.h +262 -119
- data/ext/fox16_c/table_wrap.cpp +1064 -741
- data/ext/fox16_c/text_wrap.cpp +1062 -741
- data/ext/fox16_c/treelist_wrap.cpp +1522 -1189
- data/ext/fox16_c/ui_wrap.cpp +3610 -3216
- data/ext/fox16_c/unregisterOwnedObjects.cpp +1 -0
- data/fxruby.gemspec +6 -1
- data/lib/fox16/canvas.rb +1 -1
- data/lib/fox16/core.rb +97 -26
- data/lib/fox16/undolist.rb +32 -32
- data/lib/fox16/version.rb +1 -1
- data/rdoc-sources/FXApp.rb +12 -0
- data/rdoc-sources/FXFont.rb +2 -0
- data/rdoc-sources/FXMDIClient.rb +15 -0
- data/scripts/iface.rb +1 -0
- data/swig-interfaces/FXScintilla.i +1 -1
- data/swig-interfaces/FXText.i +1 -1
- data/swig-interfaces/freefuncs.i +1 -0
- data/swig-interfaces/ruby-typemaps.i +19 -19
- data/test/TC_FXBMPImage.rb +1 -1
- data/test/TC_FXDC.rb +24 -0
- data/test/TC_FXMat4f.rb +23 -14
- data/test/TC_FXSize.rb +8 -4
- data/test/TS_All.rb +4 -0
- data.tar.gz.sig +0 -0
- metadata +18 -15
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b78df00327beab3240be587e4d02ba6ad450ccb6155a7b251bbf661cbbaa4ae1
|
|
4
|
+
data.tar.gz: 73625a8a66f288a42c142e1a4e20d33acd10f22086e2232b9e284a269996b4f8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 38ee07ab04312c494b269b5687756ea19bfd79eed59688bc2b931e89be59061e35f746ec8abfa2de41f4fe9bd72e2ba807b210492b3ec4ddc5e5efd420a9a294
|
|
7
|
+
data.tar.gz: f487234efc9da4704985004d9480a9a7fa357dee1683f0f688f07566aabf4bce49eb0a1ba1e80cfe748f7a68188983a311f29a54c86e8a63e187fccf6c58d084
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
|
@@ -25,6 +25,23 @@ jobs:
|
|
|
25
25
|
uses: ruby/setup-ruby@v1
|
|
26
26
|
with:
|
|
27
27
|
ruby-version: "4.0"
|
|
28
|
+
|
|
29
|
+
- name: install latest swig
|
|
30
|
+
run: |
|
|
31
|
+
wget http://prdownloads.sourceforge.net/swig/swig-4.5.0.tar.gz
|
|
32
|
+
tar xf swig-4.5.0.tar.gz
|
|
33
|
+
cd swig-4.5.0
|
|
34
|
+
./configure -without-alllang --with-ruby
|
|
35
|
+
make -j`nproc`
|
|
36
|
+
sudo make install
|
|
37
|
+
|
|
38
|
+
- name: Print tool versions
|
|
39
|
+
run: |
|
|
40
|
+
ruby -v
|
|
41
|
+
gcc -v
|
|
42
|
+
swig -version
|
|
43
|
+
gem env
|
|
44
|
+
|
|
28
45
|
- run: bundle install
|
|
29
46
|
|
|
30
47
|
- name: Build binary gem
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -35,10 +35,20 @@ jobs:
|
|
|
35
35
|
- uses: ruby/setup-ruby-pkgs@v1
|
|
36
36
|
with:
|
|
37
37
|
ruby-version: ${{ matrix.ruby }} # passed to ruby/setup-ruby
|
|
38
|
-
apt-get: "
|
|
39
|
-
brew: "fox
|
|
38
|
+
apt-get: "xserver-xorg-video-dummy libxrandr-dev libfox-1.6-dev" # Ubuntu
|
|
39
|
+
brew: "fox xquartz" # macOS
|
|
40
40
|
mingw: "fox swig" # Windows mingw / mswin /ucrt
|
|
41
41
|
|
|
42
|
+
- name: install latest swig
|
|
43
|
+
if: matrix.os != 'windows'
|
|
44
|
+
run: |
|
|
45
|
+
wget http://prdownloads.sourceforge.net/swig/swig-4.5.0.tar.gz
|
|
46
|
+
tar xf swig-4.5.0.tar.gz
|
|
47
|
+
cd swig-4.5.0
|
|
48
|
+
./configure -without-alllang --with-ruby
|
|
49
|
+
make -j`nproc`
|
|
50
|
+
sudo make install
|
|
51
|
+
|
|
42
52
|
- name: Print tool versions
|
|
43
53
|
run: |
|
|
44
54
|
ruby -v
|
|
@@ -68,6 +78,7 @@ jobs:
|
|
|
68
78
|
- name: Linux Start xpra to enable GLX
|
|
69
79
|
if: matrix.os == 'ubuntu'
|
|
70
80
|
run: |
|
|
81
|
+
curl https://xpra.org/get-xpra.sh | bash
|
|
71
82
|
xpra --xvfb="Xorg +extension GLX -config `pwd`/test/dummy.xorg.conf -logfile ${HOME}/.xpra/xorg.log" start :9
|
|
72
83
|
echo "DISPLAY=:9" >> $GITHUB_ENV
|
|
73
84
|
|
data/Gemfile
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
source 'https://rubygems.org'
|
|
2
2
|
|
|
3
|
+
plugin "rubygems-requirements-system"
|
|
4
|
+
|
|
3
5
|
# No fxruby gemspec, since "bundle package" fails on bundler-2.7+, if the extension isn't built
|
|
4
6
|
# gemspec
|
|
5
7
|
|
|
@@ -9,10 +11,13 @@ gem 'mini_portile2'
|
|
|
9
11
|
|
|
10
12
|
group :development do
|
|
11
13
|
gem 'rake-compiler', '~> 1.0'
|
|
12
|
-
gem 'rake-compiler-dock', '~> 1.
|
|
13
|
-
gem 'yard', '~> 0.8'
|
|
14
|
+
gem 'rake-compiler-dock', '~> 1.12.0'
|
|
15
|
+
gem 'yard', '~> 0.8', '>= 0.9.36'
|
|
14
16
|
gem "bundler", ">= 1.12", "< 5.a"
|
|
15
17
|
gem "rake", "~> 13.0"
|
|
18
|
+
gem 'rdoc'
|
|
19
|
+
gem 'webrick' # for "yard server"
|
|
20
|
+
gem 'redcarpet', '~> 3.0'
|
|
16
21
|
end
|
|
17
22
|
|
|
18
23
|
group :test do
|
data/History.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## 1.6.51 / 2026-11-12
|
|
2
|
+
|
|
3
|
+
* Update to swig-4.5 which makes use of TypedData structs which is required for ruby-4.1.
|
|
4
|
+
* Replace `DATA_PTR` and `Data_Get_Struct` by `SWIG_ConvertPtr`.
|
|
5
|
+
* Add possibility to enable FXTRACE output by the environment variable "fxTraceLevel" when running "rake test".
|
|
6
|
+
* Add `FXMat[34][fd]#to_a` , `#==` and `#inspect`.
|
|
7
|
+
They have been available for years in `FXVec` classes already.
|
|
8
|
+
* Fix `Fox::Canvas::Shape` when running without global `include Fox`
|
|
9
|
+
* Fix segfault because of missing object deregister for FXDCWindow.
|
|
10
|
+
* Fix deprecation warnung about `fptr->tied_io_for_writing`
|
|
11
|
+
* Fix type conversions of `Array<FXPoint>`, `Array<FXRectangle>`, `Array<FXSegment>` and `Array<FXArc>` to raise an error on type mismatch.
|
|
12
|
+
This wasn't checked before and could lead to invalid memory access.
|
|
13
|
+
* Update to libz-1.4, libpng-1.6.59, libjpeg-turbo-3.2.1, libtiff-4.7.2 for Windows binary gems.
|
|
14
|
+
|
|
1
15
|
## 1.6.50 / 2026-01-02
|
|
2
16
|
|
|
3
17
|
* Add binary gem support for ruby-4.0.
|
data/Rakefile
CHANGED
|
@@ -184,6 +184,8 @@ namespace :gem do
|
|
|
184
184
|
task plat => ['gem', 'prepare'] do
|
|
185
185
|
debug = "FXRUBY_MINGW_DEBUG=#{ENV['FXRUBY_MINGW_DEBUG'].inspect}" if ENV['FXRUBY_MINGW_DEBUG']
|
|
186
186
|
RakeCompilerDock.sh <<-EOT, platform: plat
|
|
187
|
+
sudo mkdir -p /__w/mingw-w64-gcc-xpack/mingw-w64-gcc-xpack/build/linux-arm64/application/x86_64-w64-mingw32/lib/../lib/ &&
|
|
188
|
+
(sudo ln /xpack-mingw/x86_64-w64-mingw32/lib/libstdc++.la /__w/mingw-w64-gcc-xpack/mingw-w64-gcc-xpack/build/linux-arm64/application/x86_64-w64-mingw32/lib/../lib/libstdc++.la || true) &&
|
|
187
189
|
sudo apt-get update &&
|
|
188
190
|
sudo apt-get install -y yasm libtool m4 automake &&
|
|
189
191
|
bundle config set without test &&
|
|
@@ -194,56 +196,28 @@ namespace :gem do
|
|
|
194
196
|
end
|
|
195
197
|
end
|
|
196
198
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
line.gsub! '#include <ruby.h>', <<-EOT
|
|
203
|
-
#include <ruby.h>
|
|
204
|
-
|
|
205
|
-
#if defined(RB_METHOD_DEFINITION_DECL)
|
|
206
|
-
# define RUBY_VALUE_METHOD_FUNC(func) (func)
|
|
207
|
-
# define RUBY_INT_METHOD_FUNC(func) (func)
|
|
208
|
-
# define RUBY_VOID_METHOD_FUNC(func) (func)
|
|
209
|
-
# define RUBY_VOIDP_METHOD_FUNC(func) (func)
|
|
210
|
-
#else
|
|
211
|
-
# define RUBY_VALUE_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))(func))
|
|
212
|
-
# define RUBY_INT_METHOD_FUNC(func) ((int (*)(ANYARGS))(func))
|
|
213
|
-
# define RUBY_VOID_METHOD_FUNC(func) ((void (*)(ANYARGS))(func))
|
|
214
|
-
# define RUBY_VOIDP_METHOD_FUNC(func) ((void *(*)(ANYARGS))(func))
|
|
215
|
-
#endif
|
|
216
|
-
EOT
|
|
217
|
-
line.gsub! /rb_define_virtual_variable\((.*?), (\w+), NULL\)/, <<-EOT
|
|
218
|
-
rb_define_virtual_variable(\\1, RUBY_VALUE_METHOD_FUNC(\\2), RUBY_VOID_METHOD_FUNC((rb_gvar_setter_t*)NULL))
|
|
219
|
-
EOT
|
|
220
|
-
|
|
221
|
-
line.gsub!('static VALUE swig_ruby_trackings_count(ANYARGS)', 'static VALUE swig_ruby_trackings_count(ID id, VALUE *var)')
|
|
222
|
-
line.gsub!('SWIG_ruby_failed(void)', 'SWIG_ruby_failed(VALUE, VALUE)')
|
|
223
|
-
|
|
224
|
-
line.gsub!(/SWIGINTERN VALUE SWIG_AUX_(\w+)\(VALUE \*args\)\s\{/m, 'SWIGINTERN VALUE SWIG_AUX_\\1(VALUE pargs){VALUE *args=(VALUE *)pargs;')
|
|
225
|
-
|
|
226
|
-
line.gsub! /static int swig_ruby_internal_iterate_callback\(void\* ptr, VALUE obj, void\(\*meth\)\(void\* ptr, VALUE obj\)\)\s*{\s*\(\*meth\)\(ptr, obj\);/m, <<-EOT
|
|
227
|
-
static int swig_ruby_internal_iterate_callback(st_data_t ptr, st_data_t obj, st_data_t meth) {
|
|
228
|
-
((void(*)(void*, VALUE))meth)((void*)ptr, (VALUE)obj);
|
|
229
|
-
EOT
|
|
199
|
+
$matched_gsubs = Hash.new { |h,e| h[e] = [] }
|
|
200
|
+
def checked_gsub!(str, from, to)
|
|
201
|
+
old = str.dup
|
|
202
|
+
n = str.gsub!(from, to)
|
|
230
203
|
|
|
231
|
-
|
|
204
|
+
$matched_gsubs[[from, to]] << (old != str)
|
|
232
205
|
|
|
233
|
-
|
|
234
|
-
|
|
206
|
+
n
|
|
207
|
+
end
|
|
235
208
|
|
|
236
|
-
|
|
209
|
+
namespace :swig do
|
|
210
|
+
def patch_swigruby(line)
|
|
237
211
|
|
|
238
212
|
# Allow Truffleruby-22.1.0 to compile the sources without fxscintilla.
|
|
239
213
|
# Unfortunately Truffleruby still fails with various runtime errors.
|
|
240
214
|
if RUBY_ENGINE == "truffleruby"
|
|
241
|
-
|
|
215
|
+
checked_gsub! line, '#include <ruby.h>', <<-EOT
|
|
242
216
|
#include <ruby.h>
|
|
243
217
|
#define rb_define_virtual_variable(x,y,z)
|
|
244
218
|
EOT
|
|
245
219
|
|
|
246
|
-
|
|
220
|
+
checked_gsub! line, 'rb_define_readonly_variable("$swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, &swig_runtime_data_type_pointer);', <<-EOT
|
|
247
221
|
if (rb_gv_get("$swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME) == RUBY_Qnil) {
|
|
248
222
|
rb_gv_set("$swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, swig_runtime_data_type_pointer);
|
|
249
223
|
}
|
|
@@ -257,13 +231,13 @@ namespace :swig do
|
|
|
257
231
|
puts "Update #{wrapper_src_file_name}"
|
|
258
232
|
|
|
259
233
|
line = File.read(wrapper_src_file_name)
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
234
|
+
checked_gsub!(line, /static VALUE mCore;/, "VALUE mCore;")
|
|
235
|
+
checked_gsub!(line, /mCore = rb_define_module\("Core"\)/, "mFox = rb_define_module(\"Fox\")")
|
|
236
|
+
checked_gsub!(line, /mCore/, "mFox")
|
|
237
|
+
# checked_gsub!(line, /static VALUE m(Dc|Dialogs|Frames|Iconlist|Icons|Image|Label|Layout|List|Mdi|Menu|Fx3d|Scintilla|Table|Text|Treelist|Ui);/, '')
|
|
238
|
+
checked_gsub!(line, /m(Dc|Dialogs|Frames|Iconlist|Icons|Image|Label|Layout|List|Mdi|Menu|Fx3d|Scintilla|Table|Text|Treelist|Ui) = rb_define_module.*/, '')
|
|
239
|
+
checked_gsub!(line, /rb_require.*/, '')
|
|
240
|
+
checked_gsub!(line, /m(Dc|Dialogs|Frames|Iconlist|Icons|Image|Label|Layout|List|Mdi|Menu|Fx3d|Scintilla|Table|Text|Treelist|Ui),/, "mFox,")
|
|
267
241
|
|
|
268
242
|
line = patch_swigruby(line)
|
|
269
243
|
|
|
@@ -396,3 +370,11 @@ namespace :docs do
|
|
|
396
370
|
sh 'git', 'add', 'docs'
|
|
397
371
|
end
|
|
398
372
|
end
|
|
373
|
+
|
|
374
|
+
task :compile do
|
|
375
|
+
never_matched = $matched_gsubs.select { |_key, matches| matches.all?(false) }
|
|
376
|
+
|
|
377
|
+
never_matched.each do |(from, to), |
|
|
378
|
+
warn "gsub didn't match on\n from: #{from}\n to: #{to}"
|
|
379
|
+
end
|
|
380
|
+
end
|
data/doap.rdf
CHANGED
|
@@ -77,8 +77,8 @@
|
|
|
77
77
|
<doap:release>
|
|
78
78
|
<doap:Version>
|
|
79
79
|
<doap:branch>fox16</doap:branch>
|
|
80
|
-
<doap:created>
|
|
81
|
-
<doap:revision>1.6.
|
|
80
|
+
<doap:created>2026-03-27</doap:created>
|
|
81
|
+
<doap:revision>1.6.50</doap:revision>
|
|
82
82
|
</doap:Version>
|
|
83
83
|
</doap:release>
|
|
84
84
|
|
|
@@ -114,9 +114,9 @@
|
|
|
114
114
|
</div>
|
|
115
115
|
|
|
116
116
|
<div id="footer">
|
|
117
|
-
Generated on
|
|
117
|
+
Generated on Thu Mar 26 09:49:31 2026 by
|
|
118
118
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
119
|
-
0.9.
|
|
119
|
+
0.9.38 (ruby-4.0.0).
|
|
120
120
|
</div>
|
|
121
121
|
|
|
122
122
|
</div>
|
|
@@ -467,9 +467,9 @@
|
|
|
467
467
|
</div>
|
|
468
468
|
|
|
469
469
|
<div id="footer">
|
|
470
|
-
Generated on
|
|
470
|
+
Generated on Thu Mar 26 09:49:31 2026 by
|
|
471
471
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
472
|
-
0.9.
|
|
472
|
+
0.9.38 (ruby-4.0.0).
|
|
473
473
|
</div>
|
|
474
474
|
|
|
475
475
|
</div>
|
|
@@ -467,9 +467,9 @@
|
|
|
467
467
|
</div>
|
|
468
468
|
|
|
469
469
|
<div id="footer">
|
|
470
|
-
Generated on
|
|
470
|
+
Generated on Thu Mar 26 09:49:31 2026 by
|
|
471
471
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
472
|
-
0.9.
|
|
472
|
+
0.9.38 (ruby-4.0.0).
|
|
473
473
|
</div>
|
|
474
474
|
|
|
475
475
|
</div>
|
|
@@ -995,9 +995,9 @@
|
|
|
995
995
|
</div>
|
|
996
996
|
|
|
997
997
|
<div id="footer">
|
|
998
|
-
Generated on
|
|
998
|
+
Generated on Thu Mar 26 09:49:31 2026 by
|
|
999
999
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
1000
|
-
0.9.
|
|
1000
|
+
0.9.38 (ruby-4.0.0).
|
|
1001
1001
|
</div>
|
|
1002
1002
|
|
|
1003
1003
|
</div>
|
|
@@ -135,9 +135,9 @@
|
|
|
135
135
|
</div>
|
|
136
136
|
|
|
137
137
|
<div id="footer">
|
|
138
|
-
Generated on
|
|
138
|
+
Generated on Thu Mar 26 09:49:31 2026 by
|
|
139
139
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
140
|
-
0.9.
|
|
140
|
+
0.9.38 (ruby-4.0.0).
|
|
141
141
|
</div>
|
|
142
142
|
|
|
143
143
|
</div>
|
|
@@ -429,9 +429,9 @@
|
|
|
429
429
|
</div>
|
|
430
430
|
|
|
431
431
|
<div id="footer">
|
|
432
|
-
Generated on
|
|
432
|
+
Generated on Thu Mar 26 09:49:31 2026 by
|
|
433
433
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
434
|
-
0.9.
|
|
434
|
+
0.9.38 (ruby-4.0.0).
|
|
435
435
|
</div>
|
|
436
436
|
|
|
437
437
|
</div>
|
|
@@ -342,9 +342,9 @@
|
|
|
342
342
|
</div>
|
|
343
343
|
|
|
344
344
|
<div id="footer">
|
|
345
|
-
Generated on
|
|
345
|
+
Generated on Thu Mar 26 09:49:31 2026 by
|
|
346
346
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
347
|
-
0.9.
|
|
347
|
+
0.9.38 (ruby-4.0.0).
|
|
348
348
|
</div>
|
|
349
349
|
|
|
350
350
|
</div>
|
data/docs/Fox/Canvas/Shape.html
CHANGED
|
@@ -816,7 +816,7 @@
|
|
|
816
816
|
<span class='ivar'>@draggable</span> <span class='op'>=</span> <span class='kw'>false</span>
|
|
817
817
|
<span class='ivar'>@x</span> <span class='op'>=</span> <span class='id identifier rubyid_x'>x</span>
|
|
818
818
|
<span class='ivar'>@y</span> <span class='op'>=</span> <span class='id identifier rubyid_y'>y</span>
|
|
819
|
-
<span class='ivar'>@foreground</span> <span class='op'>=</span> <span class='const'>FXRGB</span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='int'>0</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span>
|
|
819
|
+
<span class='ivar'>@foreground</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../Fox.html" title="Fox (module)">Fox</a></span></span><span class='period'>.</span><span class='const'>FXRGB</span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='int'>0</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span>
|
|
820
820
|
<span class='ivar'>@target</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
821
821
|
<span class='ivar'>@selector</span> <span class='op'>=</span> <span class='int'>0</span>
|
|
822
822
|
<span class='kw'>end</span></pre>
|
|
@@ -1945,9 +1945,9 @@
|
|
|
1945
1945
|
</div>
|
|
1946
1946
|
|
|
1947
1947
|
<div id="footer">
|
|
1948
|
-
Generated on
|
|
1948
|
+
Generated on Thu Mar 26 09:49:31 2026 by
|
|
1949
1949
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
1950
|
-
0.9.
|
|
1950
|
+
0.9.38 (ruby-4.0.0).
|
|
1951
1951
|
</div>
|
|
1952
1952
|
|
|
1953
1953
|
</div>
|
|
@@ -2021,9 +2021,9 @@
|
|
|
2021
2021
|
</div>
|
|
2022
2022
|
|
|
2023
2023
|
<div id="footer">
|
|
2024
|
-
Generated on
|
|
2024
|
+
Generated on Thu Mar 26 09:49:32 2026 by
|
|
2025
2025
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
2026
|
-
0.9.
|
|
2026
|
+
0.9.38 (ruby-4.0.0).
|
|
2027
2027
|
</div>
|
|
2028
2028
|
|
|
2029
2029
|
</div>
|
|
@@ -517,9 +517,9 @@
|
|
|
517
517
|
</div>
|
|
518
518
|
|
|
519
519
|
<div id="footer">
|
|
520
|
-
Generated on
|
|
520
|
+
Generated on Thu Mar 26 09:49:31 2026 by
|
|
521
521
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
522
|
-
0.9.
|
|
522
|
+
0.9.38 (ruby-4.0.0).
|
|
523
523
|
</div>
|
|
524
524
|
|
|
525
525
|
</div>
|
|
@@ -281,9 +281,9 @@
|
|
|
281
281
|
</div>
|
|
282
282
|
|
|
283
283
|
<div id="footer">
|
|
284
|
-
Generated on
|
|
284
|
+
Generated on Thu Mar 26 09:49:31 2026 by
|
|
285
285
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
286
|
-
0.9.
|
|
286
|
+
0.9.38 (ruby-4.0.0).
|
|
287
287
|
</div>
|
|
288
288
|
|
|
289
289
|
</div>
|
|
@@ -120,8 +120,6 @@
|
|
|
120
120
|
|
|
121
121
|
|
|
122
122
|
|
|
123
|
-
<span class="note title readonly">readonly</span>
|
|
124
|
-
|
|
125
123
|
|
|
126
124
|
|
|
127
125
|
|
|
@@ -358,11 +356,11 @@
|
|
|
358
356
|
<h2>Instance Attribute Details</h2>
|
|
359
357
|
|
|
360
358
|
|
|
361
|
-
<span id=""></span>
|
|
359
|
+
<span id="font=-instance_method"></span>
|
|
362
360
|
<div class="method_details first">
|
|
363
361
|
<h3 class="signature first" id="font-instance_method">
|
|
364
362
|
|
|
365
|
-
#<strong>font</strong> ⇒ <tt>Object</tt>
|
|
363
|
+
#<strong>font</strong> ⇒ <tt>Object</tt>
|
|
366
364
|
|
|
367
365
|
|
|
368
366
|
|
|
@@ -385,12 +383,12 @@
|
|
|
385
383
|
<pre class="lines">
|
|
386
384
|
|
|
387
385
|
|
|
388
|
-
246
|
|
389
386
|
247
|
|
390
|
-
248
|
|
387
|
+
248
|
|
388
|
+
249</pre>
|
|
391
389
|
</td>
|
|
392
390
|
<td>
|
|
393
|
-
<pre class="code"><span class="info file"># File 'lib/fox16/canvas.rb', line
|
|
391
|
+
<pre class="code"><span class="info file"># File 'lib/fox16/canvas.rb', line 247</span>
|
|
394
392
|
|
|
395
393
|
<span class='kw'>def</span> <span class='id identifier rubyid_font'>font</span>
|
|
396
394
|
<span class='ivar'>@font</span>
|
|
@@ -599,9 +597,9 @@
|
|
|
599
597
|
</div>
|
|
600
598
|
|
|
601
599
|
<div id="footer">
|
|
602
|
-
Generated on
|
|
600
|
+
Generated on Thu Mar 26 09:49:31 2026 by
|
|
603
601
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
604
|
-
0.9.
|
|
602
|
+
0.9.38 (ruby-4.0.0).
|
|
605
603
|
</div>
|
|
606
604
|
|
|
607
605
|
</div>
|
data/docs/Fox/Canvas.html
CHANGED
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
|
|
91
91
|
<p>Links</p>
|
|
92
92
|
|
|
93
|
-
<h5 id="
|
|
93
|
+
<h5 id=""></h5>
|
|
94
94
|
|
|
95
95
|
<p>Tk’s Canvas Widget</p>
|
|
96
96
|
|
|
@@ -131,9 +131,9 @@
|
|
|
131
131
|
</div>
|
|
132
132
|
|
|
133
133
|
<div id="footer">
|
|
134
|
-
Generated on
|
|
134
|
+
Generated on Thu Mar 26 09:48:23 2026 by
|
|
135
135
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
136
|
-
0.9.
|
|
136
|
+
0.9.38 (ruby-4.0.0).
|
|
137
137
|
</div>
|
|
138
138
|
|
|
139
139
|
</div>
|
data/docs/Fox/FTNonModal.html
CHANGED
|
@@ -540,9 +540,9 @@
|
|
|
540
540
|
</div>
|
|
541
541
|
|
|
542
542
|
<div id="footer">
|
|
543
|
-
Generated on
|
|
543
|
+
Generated on Thu Mar 26 09:48:23 2026 by
|
|
544
544
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
545
|
-
0.9.
|
|
545
|
+
0.9.38 (ruby-4.0.0).
|
|
546
546
|
</div>
|
|
547
547
|
|
|
548
548
|
</div>
|