Tree @55b7dfec-7e94-4d45-9893-75403ede1853/main (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
FXVec2f.i @55b7dfec-7e94-4d45-9893-75403ede1853/main — raw · history · blame
/***********************************************************************
* 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]".
***********************************************************************/
/// Single-precision 2-element vector
class FXVec2f {
public:
FXfloat x;
FXfloat y;
public:
/// Initialize with components
FXVec2f(FXfloat xx=0.0f,FXfloat yy=0.0f);
/// Copy constructor
FXVec2f(const FXVec2f& v);
// Initialize from array of floats
FXVec2f(const FXfloat v[]);
/// Length and square of length
FXfloat length2() const;
FXfloat length() const;
%extend {
/// Indexing
FXfloat __getitem__(FXint i) const {
if(i<0||i>1) rb_raise(rb_eIndexError,"index %d out of bounds",i);
return (*self)[i];
}
FXfloat __setitem__(FXint i,FXfloat f){
if(i<0||i>1) rb_raise(rb_eIndexError,"index %d out of bounds",i);
(*self)[i]=f;
return f;
}
/// Unary
FXVec2f operator-() const { return -(*self); }
/// Adding
FXVec2f operator+(const FXVec2f& other) const { return (*self)+other; }
FXVec2f operator-(const FXVec2f& other) const { return (*self)-other; }
/// Scaling
FXVec2f operator*(FXfloat n) const { return (*self)*n; }
FXVec2f operator/(FXfloat n) const {
if(n==0.0f) rb_raise(rb_eZeroDivError,"divided by 0");
return (*self)/n;
}
/// Dot product
FXfloat operator*(const FXVec2f& other) const { return (*self)*other; }
FXfloat dot(const FXVec2f& other) const { return (*self)*other; }
/// Equality tests
bool operator==(const FXVec2f& other) const { return (*self)==other; }
/// Normalize vector
FXVec2f normalize() const { return normalize(*self); }
/// Lowest or highest components
FXVec2f lo(const FXVec2f& other) const { return lo(*self,other); }
FXVec2f hi(const FXVec2f& other) const { return hi(*self,other); }
}
/// Clamp values of vector between limits
FXVec2f& clamp(FXfloat lo,FXfloat hi);
};
|