Tree @3d5a4e82-a43d-42a1-b45b-3cdbad1db042/upstream/1.6.45+git20221125.1.7d76b2a (Download .tar.gz)
- ..
- common.i
- core.i
- dcmodule.i
- dialogs.i
- exceptions.i
- framesmodule.i
- freefuncs.i
- fx3d.i
- FX4Splitter.i
- FX7Segment.i
- FXAccelTable.i
- FXApp.i
- FXArrowButton.i
- FXBitmap.i
- FXBitmapFrame.i
- FXBitmapView.i
- FXBMPIcon.i
- FXBMPImage.i
- FXButton.i
- FXCanvas.i
- FXCheckButton.i
- FXChoiceBox.i
- FXColorBar.i
- FXColorDialog.i
- FXColorList.i
- FXColorRing.i
- FXColorSelector.i
- FXColorWell.i
- FXColorWheel.i
- FXComboBox.i
- FXComposeContext.i
- FXComposite.i
- FXCURCursor.i
- FXCursor.i
- FXDataTarget.i
- FXDC.i
- FXDCPrint.i
- FXDCWindow.i
- FXDebugTarget.i
- fxdefs.i
- FXDelegator.i
- FXDial.i
- FXDialogBox.i
- FXDict.i
- FXDirBox.i
- FXDirDialog.i
- FXDirList.i
- FXDirSelector.i
- FXDockBar.i
- FXDockHandler.i
- FXDockSite.i
- FXDockTitle.i
- FXDocument.i
- FXDragCorner.i
- FXDrawable.i
- FXDriveBox.i
- FXExtentd.i
- FXExtentf.i
- FXFileDialog.i
- FXFileDict.i
- FXFileList.i
- FXFileSelector.i
- FXFileStream.i
- FXFoldingList.i
- FXFont.i
- FXFontDialog.i
- FXFontSelector.i
- FXFrame.i
- FXGIFCursor.i
- FXGIFIcon.i
- FXGIFImage.i
- FXGLCanvas.i
- FXGLContext.i
- FXGLObject.i
- FXGLShape.i
- FXGLViewer.i
- FXGLVisual.i
- FXGradientBar.i
- FXGroupBox.i
- FXHeader.i
- FXHorizontalFrame.i
- FXICOIcon.i
- FXICOImage.i
- FXIcon.i
- FXIconDict.i
- FXIconList.i
- FXIconSource.i
- FXId.i
- FXImage.i
- FXImageFrame.i
- FXImageView.i
- FXInputDialog.i
- FXJPGIcon.i
- FXJPGImage.i
- FXKnob.i
- FXLabel.i
- FXList.i
- FXListBox.i
- FXMainWindow.i
- FXMat3d.i
- FXMat3f.i
- FXMat4d.i
- FXMat4f.i
- FXMatrix.i
- FXMDIButton.i
- FXMDIChild.i
- FXMDIClient.i
- FXMemoryBuffer.i
- FXMemoryStream.i
- FXMenuBar.i
- FXMenuButton.i
- FXMenuCaption.i
- FXMenuCascade.i
- FXMenuCheck.i
- FXMenuCommand.i
- FXMenuPane.i
- FXMenuRadio.i
- FXMenuSeparator.i
- FXMenuTitle.i
- FXMessageBox.i
- FXObject.i
- FXOptionMenu.i
- FXPacker.i
- FXPCXIcon.i
- FXPCXImage.i
- FXPicker.i
- FXPNGIcon.i
- FXPNGImage.i
- FXPoint.i
- FXPopup.i
- FXPPMIcon.i
- FXPPMImage.i
- FXPrintDialog.i
- FXProgressBar.i
- FXProgressDialog.i
- FXQuatd.i
- FXQuatf.i
- FXRadioButton.i
- FXRanged.i
- FXRangef.i
- FXRealSlider.i
- FXRealSpinner.i
- FXRecentFiles.i
- FXRectangle.i
- FXRegion.i
- FXRegistry.i
- FXReplaceDialog.i
- FXRGBIcon.i
- FXRGBImage.i
- FXRootWindow.i
- FXRuler.i
- FXRulerView.i
- FXScintilla.i
- FXScrollArea.i
- FXScrollBar.i
- FXScrollPane.i
- FXScrollWindow.i
- FXSearchDialog.i
- FXSeparator.i
- FXSettings.i
- FXShell.i
- FXShutter.i
- FXSize.i
- FXSlider.i
- FXSphered.i
- FXSpheref.i
- FXSpinner.i
- FXSplashWindow.i
- FXSplitter.i
- FXSpring.i
- FXStatusBar.i
- FXStatusLine.i
- FXStream.i
- FXStringDict.i
- FXSwitcher.i
- FXTabBar.i
- FXTabBook.i
- FXTabItem.i
- FXTable.i
- FXText.i
- FXTextField.i
- FXTGAIcon.i
- FXTGAImage.i
- FXTIFIcon.i
- FXTIFImage.i
- FXToggleButton.i
- FXToolBar.i
- FXToolBarGrip.i
- FXToolBarShell.i
- FXToolBarTab.i
- FXToolTip.i
- FXTopWindow.i
- FXTranslator.i
- FXTreeList.i
- FXTreeListBox.i
- FXTriStateButton.i
- FXURL.i
- FXVec2d.i
- FXVec2f.i
- FXVec3d.i
- FXVec3f.i
- FXVec4d.i
- FXVec4f.i
- FXVerticalFrame.i
- FXVisual.i
- FXWindow.i
- FXWizard.i
- FXXBMIcon.i
- FXXBMImage.i
- FXXPMIcon.i
- FXXPMImage.i
- handlers.i
- iconlistmodule.i
- icons.i
- ignore-message-handlers.rb
- image.i
- labelmodule.i
- layout.i
- listmodule.i
- macros.i
- markfuncs.i
- mdi.i
- menumodule.i
- README
- ruby-typemaps.i
- scintilla.i
- table-module.i
- text-module.i
- treelist-module.i
- ui.i
FXVec4f.i @3d5a4e82-a43d-42a1-b45b-3cdbad1db042/upstream/1.6.45+git20221125.1.7d76b2a — raw · history · blame
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | /***********************************************************************
* FXRuby -- the Ruby language bindings for the FOX GUI toolkit.
* Copyright (c) 2001-2009 by Lyle Johnson. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* For further information please contact the author by e-mail
* at "[email protected]".
***********************************************************************/
%rename("crosses?") FXVec4f::crosses(const FXVec3f& a,const FXVec3f& b) const;
%naturalvar FXVec4f;
/// Single-precision 4-element vector
class FXVec4f {
public:
FXfloat x;
FXfloat y;
FXfloat z;
FXfloat w;
public:
/// Default constructor
%extend {
FXVec4f() {
return new FXVec4f(0.0f, 0.0f, 0.0f, 0.0f);
}
}
/// Copy constructor
FXVec4f(const FXVec4f& w);
/// Initialize with 3-vector and optional scalar
FXVec4f(const FXVec3f& w,FXfloat ww=1.0f);
/// Initialize with components
FXVec4f(FXfloat x,FXfloat y,FXfloat z,FXfloat w=1.0f);
/// Initialize with color
FXVec4f(FXColor color);
/// Signed distance normalized plane and point
FXfloat distance(const FXVec3f& p) const;
/// Return true if edge a-b crosses plane
bool crosses(const FXVec3f& a,const FXVec3f& b) const;
FXfloat length() const;
FXfloat length2() const;
%extend {
/// Indexing
FXfloat __getitem__(FXint i) const {
if(i<0||i>3) rb_raise(rb_eIndexError,"index %d out of bounds",i);
return (*self)[i];
}
FXfloat __setitem__(FXint i,FXfloat f){
if(i<0||i>3) rb_raise(rb_eIndexError,"index %d out of bounds",i);
(*self)[i]=f;
return f;
}
// Negation
FXVec4f operator-() const { return -(*self); }
// Addition
FXVec4f operator+(const FXVec4f& b) const { return (*self)+b; }
// Subtraction
FXVec4f operator-(const FXVec4f& b) const { return (*self)-b; }
// Multiply by a scalar
FXVec4f operator*(FXfloat n) const { return (*self)*n; }
// Divide by a scalar
FXVec4f operator/(FXfloat n) const {
if(n==0.0f) rb_raise(rb_eZeroDivError,"divided by 0");
return (*self)/n;
}
/// Dot product
FXfloat operator*(const FXVec4f& a) const { return (*self)*a; }
FXfloat dot(const FXVec4f& a) const { return (*self)*a; }
/// Equality tests
bool operator==(const FXVec4f& b) const { return (*self == b); }
bool operator==(FXfloat n) const { return (*self == n); }
// Other functions
FXVec4f normalize() const { return normalize(*self); }
FXVec4f lo(const FXVec4f& other) const { return lo(*self,other); }
FXVec4f hi(const FXVec4f& other) const { return hi(*self,other); }
/// Compute normalized plane equation ax+by+cz+d=0
static FXVec4f plane(const FXVec4f& vec){ return FX::plane(vec); }
static FXVec4f plane(const FXVec3f& vec,FXfloat dist){ return FX::plane(vec,dist); }
static FXVec4f plane(const FXVec3f& vec,const FXVec3f& p){ return FX::plane(vec,p); }
static FXVec4f plane(const FXVec3f& a,const FXVec3f& b,const FXVec3f& c){ return FX::plane(a,b,c); }
}
/// Clamp values of vector between limits
FXVec4f& clamp(FXfloat lo,FXfloat hi);
};
|