Struct cogl::MatrixStack [−][src]
pub struct MatrixStack(_, _);
Implementations
impl MatrixStack
[src]
pub fn new(ctx: &Context) -> MatrixStack
[src]
Allocates a new MatrixStack
that can be used to build up
transformations relating to objects in a scenegraph like hierarchy.
(See the description of MatrixStack
and MatrixEntry
for
more details of what a matrix stack is best suited for)
When a MatrixStack
is first allocated it is conceptually
positioned at the root of your scenegraph hierarchy. As you
traverse your scenegraph then you should call
MatrixStack::push
whenever you move down a level and
MatrixStack::pop
whenever you move back up a level towards
the root.
Once you have allocated a MatrixStack
you can get a reference
to the current transformation for the current position in the
hierarchy by calling MatrixStack::get_entry
.
Once you have allocated a MatrixStack
you can apply operations
such as rotate, scale and translate to modify the current transform
for the current position in the hierarchy by calling
MatrixStack::rotate
, MatrixStack::scale
and
MatrixStack::translate
.
ctx
A Context
Returns
A newly allocated MatrixStack
pub fn frustum(
&self,
left: f32,
right: f32,
bottom: f32,
top: f32,
z_near: f32,
z_far: f32
)
[src]
&self,
left: f32,
right: f32,
bottom: f32,
top: f32,
z_near: f32,
z_far: f32
)
Replaces the current matrix with a perspective matrix for a given viewing frustum defined by 4 side clip planes that all cross through the origin and 2 near and far clip planes.
left
X position of the left clipping plane where it intersects the near clipping plane
right
X position of the right clipping plane where it intersects the near clipping plane
bottom
Y position of the bottom clipping plane where it intersects the near clipping plane
top
Y position of the top clipping plane where it intersects the near clipping plane
z_near
The distance to the near clipping plane (Must be positive)
z_far
The distance to the far clipping plane (Must be positive)
pub fn get(&self) -> (Matrix, Matrix)
[src]
Resolves the current self
transform into a Matrix
by
combining the operations that have been applied to build up the
current transform.
There are two possible ways that this function may return its
result depending on whether the stack is able to directly point
to an internal Matrix
or whether the result needs to be
composed of multiple operations.
If an internal matrix contains the required result then this
function will directly return a pointer to that matrix, otherwise
if the function returns None
then matrix
will be initialized
to match the current transform of self
.
<note>``matrix
will be left untouched if a direct pointer is
returned.</note>
matrix
The potential destination for the current matrix
Returns
A direct pointer to the current transform or None
and in that case matrix
will be initialized with
the value of the current transform.
pub fn get_entry(&self) -> Option<MatrixEntry>
[src]
Gets a reference to the current transform represented by a
MatrixEntry
pointer.
<note>
The transform represented by a MatrixEntry
is
immutable.</note>
<note>``MatrixEntry
s are reference counted using
MatrixEntry::ref
and MatrixEntry::unref
and you
should call MatrixEntry::unref
when you are finished with
and entry you get via MatrixStack::get_entry
.</note>
Returns
A pointer to the MatrixEntry
representing the current matrix stack transform.
pub fn get_inverse(&self) -> (bool, Matrix)
[src]
Gets the inverse transform of the current matrix and uses it to
initialize a new Matrix
.
inverse
The destination for a 4x4 inverse transformation matrix
Returns
true
if the inverse was successfully calculated or false
for degenerate transformations that can’t be inverted (in this case the
inverse
matrix will simply be initialized with the identity matrix)
pub fn load_identity(&self)
[src]
Resets the current matrix to the identity matrix.
pub fn multiply(&self, matrix: &Matrix)
[src]
Multiplies the current matrix by the given matrix.
matrix
the matrix to multiply with the current model-view
pub fn orthographic(
&self,
x_1: f32,
y_1: f32,
x_2: f32,
y_2: f32,
near: f32,
far: f32
)
[src]
&self,
x_1: f32,
y_1: f32,
x_2: f32,
y_2: f32,
near: f32,
far: f32
)
Replaces the current matrix with an orthographic projection matrix.
x_1
The x coordinate for the first vertical clipping plane
y_1
The y coordinate for the first horizontal clipping plane
x_2
The x coordinate for the second vertical clipping plane
y_2
The y coordinate for the second horizontal clipping plane
near
The <emphasis>
distance</emphasis>
to the near clipping
plane (will be <emphasis>
negative</emphasis>
if the plane is
behind the viewer)
far
The <emphasis>
distance</emphasis>
to the far clipping
plane (will be <emphasis>
negative</emphasis>
if the plane is
behind the viewer)
pub fn perspective(&self, fov_y: f32, aspect: f32, z_near: f32, z_far: f32)
[src]
Replaces the current matrix with a perspective matrix based on the provided values.
<note>
You should be careful not to have too great a z_far
/ z_near
ratio since that will reduce the effectiveness of depth testing
since there wont be enough precision to identify the depth of
objects near to each other.</note>
fov_y
Vertical field of view angle in degrees.
aspect
The (width over height) aspect ratio for display
z_near
The distance to the near clipping plane (Must be positive, and must not be 0)
z_far
The distance to the far clipping plane (Must be positive)
pub fn pop(&self)
[src]
Restores the previous transform that was last saved by calling
MatrixStack::push
.
This is usually called while traversing a scenegraph whenever you return up one level in the graph towards the root node.
pub fn push(&self)
[src]
Saves the current transform and starts a new transform that derives from the current transform.
This is usually called while traversing a scenegraph whenever you
traverse one level deeper. MatrixStack::pop
can then be
called when going back up one layer to restore the previous
transform of an ancestor.
pub fn rotate(&self, angle: f32, x: f32, y: f32, z: f32)
[src]
Multiplies the current matrix by one that rotates the around the
axis-vector specified by x
, y
and z
. The rotation follows the
right-hand thumb rule so for example rotating by 10 degrees about
the axis-vector (0, 0, 1) causes a small counter-clockwise
rotation.
angle
Angle in degrees to rotate.
x
X-component of vertex to rotate around.
y
Y-component of vertex to rotate around.
z
Z-component of vertex to rotate around.
pub fn rotate_euler(&self, euler: &Euler)
[src]
Multiplies the current matrix by one that rotates according to the
rotation described by euler
.
euler
A Euler
pub fn rotate_quaternion(&self, quaternion: &Quaternion)
[src]
Multiplies the current matrix by one that rotates according to the
rotation described by quaternion
.
quaternion
A Quaternion
pub fn scale(&self, x: f32, y: f32, z: f32)
[src]
Multiplies the current matrix by one that scales the x, y and z axes by the given values.
x
Amount to scale along the x-axis
y
Amount to scale along the y-axis
z
Amount to scale along the z-axis
pub fn set(&self, matrix: &Matrix)
[src]
Replaces the current self
matrix value with the value of matrix
.
This effectively discards any other operations that were applied
since the last time MatrixStack::push
was called or since
the stack was initialized.
matrix
A Matrix
replace the current matrix value with
pub fn translate(&self, x: f32, y: f32, z: f32)
[src]
Trait Implementations
impl Clone for MatrixStack
[src]
fn clone(&self) -> MatrixStack
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for MatrixStack
[src]
impl Display for MatrixStack
[src]
impl Eq for MatrixStack
[src]
impl Hash for MatrixStack
[src]
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl IsA<Object> for MatrixStack
[src]
impl Ord for MatrixStack
[src]
fn cmp(&self, other: &MatrixStack) -> Ordering
[src]
#[must_use]pub fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]
impl<T: ObjectType> PartialEq<T> for MatrixStack
[src]
impl<T: ObjectType> PartialOrd<T> for MatrixStack
[src]
fn partial_cmp(&self, other: &T) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl StaticType for MatrixStack
[src]
fn static_type() -> Type
[src]
Auto Trait Implementations
impl RefUnwindSafe for MatrixStack
impl !Send for MatrixStack
impl !Sync for MatrixStack
impl Unpin for MatrixStack
impl UnwindSafe for MatrixStack
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<Super, Sub> CanDowncast<Sub> for Super where
Sub: IsA<Super>,
Super: IsA<Super>,
[src]
Sub: IsA<Super>,
Super: IsA<Super>,
impl<T> Cast for T where
T: ObjectType,
[src]
T: ObjectType,
pub fn upcast<T>(self) -> T where
Self: IsA<T>,
T: ObjectType,
[src]
Self: IsA<T>,
T: ObjectType,
pub fn upcast_ref<T>(&self) -> &T where
Self: IsA<T>,
T: ObjectType,
[src]
Self: IsA<T>,
T: ObjectType,
pub fn downcast<T>(self) -> Result<T, Self> where
Self: CanDowncast<T>,
T: ObjectType,
[src]
Self: CanDowncast<T>,
T: ObjectType,
pub fn downcast_ref<T>(&self) -> Option<&T> where
Self: CanDowncast<T>,
T: ObjectType,
[src]
Self: CanDowncast<T>,
T: ObjectType,
pub fn dynamic_cast<T>(self) -> Result<T, Self> where
T: ObjectType,
[src]
T: ObjectType,
pub fn dynamic_cast_ref<T>(&self) -> Option<&T> where
T: ObjectType,
[src]
T: ObjectType,
pub unsafe fn unsafe_cast<T>(self) -> T where
T: ObjectType,
[src]
T: ObjectType,
pub unsafe fn unsafe_cast_ref<T>(&self) -> &T where
T: ObjectType,
[src]
T: ObjectType,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ObjectExt for T where
T: ObjectType,
[src]
T: ObjectType,
pub fn is<U>(&self) -> bool where
U: StaticType,
[src]
U: StaticType,
pub fn get_type(&self) -> Type
[src]
pub fn get_object_class(&self) -> &ObjectClass
[src]
pub fn set_properties(
&self,
property_values: &[(&str, &dyn ToValue)]
) -> Result<(), BoolError>
[src]
&self,
property_values: &[(&str, &dyn ToValue)]
) -> Result<(), BoolError>
pub fn set_property<'a, N>(
&self,
property_name: N,
value: &dyn ToValue
) -> Result<(), BoolError> where
N: Into<&'a str>,
[src]
&self,
property_name: N,
value: &dyn ToValue
) -> Result<(), BoolError> where
N: Into<&'a str>,
pub fn get_property<'a, N>(&self, property_name: N) -> Result<Value, BoolError> where
N: Into<&'a str>,
[src]
N: Into<&'a str>,
pub unsafe fn set_qdata<QD>(&self, key: Quark, value: QD) where
QD: 'static,
[src]
QD: 'static,
pub unsafe fn get_qdata<QD>(&self, key: Quark) -> Option<&QD> where
QD: 'static,
[src]
QD: 'static,
pub unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD> where
QD: 'static,
[src]
QD: 'static,
pub unsafe fn set_data<QD>(&self, key: &str, value: QD) where
QD: 'static,
[src]
QD: 'static,
pub unsafe fn get_data<QD>(&self, key: &str) -> Option<&QD> where
QD: 'static,
[src]
QD: 'static,
pub unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD> where
QD: 'static,
[src]
QD: 'static,
pub fn block_signal(&self, handler_id: &SignalHandlerId)
[src]
pub fn unblock_signal(&self, handler_id: &SignalHandlerId)
[src]
pub fn stop_signal_emission(&self, signal_name: &str)
[src]
pub fn disconnect(&self, handler_id: SignalHandlerId)
[src]
pub fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId where
F: 'static + Fn(&T, &ParamSpec) + Send + Sync,
[src]
F: 'static + Fn(&T, &ParamSpec) + Send + Sync,
pub unsafe fn connect_notify_unsafe<F>(
&self,
name: Option<&str>,
f: F
) -> SignalHandlerId where
F: Fn(&T, &ParamSpec),
[src]
&self,
name: Option<&str>,
f: F
) -> SignalHandlerId where
F: Fn(&T, &ParamSpec),
pub fn notify<'a, N>(&self, property_name: N) where
N: Into<&'a str>,
[src]
N: Into<&'a str>,
pub fn notify_by_pspec(&self, pspec: &ParamSpec)
[src]
pub fn has_property<'a, N>(&self, property_name: N, type_: Option<Type>) -> bool where
N: Into<&'a str>,
[src]
N: Into<&'a str>,
pub fn get_property_type<'a, N>(&self, property_name: N) -> Option<Type> where
N: Into<&'a str>,
[src]
N: Into<&'a str>,
pub fn find_property<'a, N>(&self, property_name: N) -> Option<ParamSpec> where
N: Into<&'a str>,
[src]
N: Into<&'a str>,
pub fn list_properties(&self) -> Vec<ParamSpec, Global>
[src]
pub fn connect<'a, N, F>(
&self,
signal_name: N,
after: bool,
callback: F
) -> Result<SignalHandlerId, BoolError> where
N: Into<&'a str>,
F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,
[src]
&self,
signal_name: N,
after: bool,
callback: F
) -> Result<SignalHandlerId, BoolError> where
N: Into<&'a str>,
F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,
pub fn connect_local<'a, N, F>(
&self,
signal_name: N,
after: bool,
callback: F
) -> Result<SignalHandlerId, BoolError> where
N: Into<&'a str>,
F: Fn(&[Value]) -> Option<Value> + 'static,
[src]
&self,
signal_name: N,
after: bool,
callback: F
) -> Result<SignalHandlerId, BoolError> where
N: Into<&'a str>,
F: Fn(&[Value]) -> Option<Value> + 'static,
pub unsafe fn connect_unsafe<'a, N, F>(
&self,
signal_name: N,
after: bool,
callback: F
) -> Result<SignalHandlerId, BoolError> where
N: Into<&'a str>,
F: Fn(&[Value]) -> Option<Value>,
[src]
&self,
signal_name: N,
after: bool,
callback: F
) -> Result<SignalHandlerId, BoolError> where
N: Into<&'a str>,
F: Fn(&[Value]) -> Option<Value>,
pub fn emit<'a, N>(
&self,
signal_name: N,
args: &[&dyn ToValue]
) -> Result<Option<Value>, BoolError> where
N: Into<&'a str>,
[src]
&self,
signal_name: N,
args: &[&dyn ToValue]
) -> Result<Option<Value>, BoolError> where
N: Into<&'a str>,
pub fn downgrade(&self) -> WeakRef<T>
[src]
pub fn bind_property<'a, O, N, M>(
&'a self,
source_property: N,
target: &'a O,
target_property: M
) -> BindingBuilder<'a> where
O: ObjectType,
N: Into<&'a str>,
M: Into<&'a str>,
[src]
&'a self,
source_property: N,
target: &'a O,
target_property: M
) -> BindingBuilder<'a> where
O: ObjectType,
N: Into<&'a str>,
M: Into<&'a str>,
pub fn ref_count(&self) -> u32
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T> ToSendValue for T where
T: SetValue + Send + ToValue + ?Sized,
[src]
T: SetValue + Send + ToValue + ?Sized,
pub fn to_send_value(&self) -> SendValue
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T> ToValue for T where
T: SetValue + ?Sized,
[src]
T: SetValue + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,