-
Lyle Johnson authoredLyle Johnson authored
FXExtentd.i 3.67 KiB
/***********************************************************************
* 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 "lyle@lylejohnson.name".
***********************************************************************/
%rename("empty?") FXExtentd::empty() const;
%rename("contains?") FXExtentd::contains(FXfloat x,FXfloat y) const;
%rename("contains?") FXExtentd::contains(const FXVec2d& p) const;
%rename("contains?") FXExtentd::contains(const FXExtentd& ext) const;
%rename("include!") FXExtentd::include(FXfloat x,FXfloat y);
%rename("include!") FXExtentd::include(const FXVec2d& v);
%rename("include!") FXExtentd::include(const FXExtentd& ext);
%rename("overlap?") FXExtentd::overlap(const FXExtentd& other) const;
/// Extent
class FXExtentd {
public:
FXVec2d lower;
FXVec2d upper;
public:
/// Default constructor
FXExtentd();
/// Copy constructor
FXExtentd(const FXExtentd& ext);
/// Initialize from two vectors
FXExtentd(const FXVec2d& lo,const FXVec2d& hi);
/// Initialize from six numbers
FXExtentd(FXdouble xlo,FXdouble xhi,FXdouble ylo,FXdouble yhi);
%extend {
/// Indexing with 0..1
FXVec2d& __setitem__(FXint i,FXVec2d& v) {
if(i<0||i>1) rb_raise(rb_eIndexError,"index %d out of bounds",i);
(*self)[i]=v;
return v;
}
/// Indexing with 0..1
const FXVec2d& __getitem__(FXint i) const {
if(i<0||i>1) rb_raise(rb_eIndexError,"index %d out of bounds",i);
return (*self)[i];
}
}
/// Width of box
FXdouble width() const;
/// Height of box
FXdouble height() const;
/// Longest side
FXdouble longest() const;
/// shortest side
FXdouble shortest() const;
/// Length of diagonal
FXdouble diameter() const;
/// Get radius of box
FXdouble radius() const;
/// Compute diagonal
FXVec2d diagonal() const;
/// Get center of box
FXVec2d center() const;
/// Test if empty
bool empty() const;
/// Test if box contains point x,y
bool contains(FXdouble x,FXdouble y) const;
/// Test if box contains point p
bool contains(const FXVec2d& p) const;
/// Test if box properly contains another box
bool contains(const FXExtentd& ext) const;
/// Include point
FXExtentd& include(FXdouble x,FXdouble y);
/// Include point
FXExtentd& include(const FXVec2d& v);
/// Include given range into extent
FXExtentd& include(const FXExtentd& ext);
/// Get corner number 0..3
FXVec2d corner(FXint c) const;
%extend {
/// Test if bounds overlap
bool overlap(const FXExtentd& other) const {
return overlap(*self,other);
}
/// Union of two boxes
FXExtentd unite_with(const FXExtentd& other) const {
return unite(*self,other);
}
/// Intersection of two boxes
FXExtentd intersect_with(const FXExtentd& other) const {
return intersect(*self,other);
}
}
};