Struct kas_core::geom::Offset

source ·
pub struct Offset(pub i32, pub i32);
Expand description

A (x, y) offset, also known as a vector

This is a relative position. It can be added to or subtracted from a Coord, and it can be added to or subtracted from itself. It can be negative. It can be multiplied by a scalar.

This may be converted to Size with from / into.

Tuple Fields§

§0: i32§1: i32

Implementations§

The constant (0, 0)

The minimum value

The maximum value

True when for all components, lhs < rhs

True when for all components, lhs ≤ rhs

True when for all components, lhs ≥ rhs

True when for all components, lhs > rhs

Return the minimum, componentwise

Examples found in repository?
src/event/components.rs (line 154)
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
    pub fn set_offset(&mut self, offset: Offset) -> TkAction {
        let offset = offset.min(self.max_offset).max(Offset::ZERO);
        if offset == self.offset {
            TkAction::empty()
        } else {
            self.offset = offset;
            TkAction::REGION_MOVED
        }
    }

    /// Scroll to make the given `rect` visible
    ///
    /// Inputs and outputs:
    ///
    /// -   `rect`: the rect to focus in child's coordinate space
    /// -   `window_rect`: the rect of the scroll window
    /// -   returned `Rect`: the focus rect, adjusted for scroll offset; this
    ///     may be set via [`EventMgr::set_scroll`]
    /// -   returned `TkAction`: action to pass to the event manager
    pub fn focus_rect(&mut self, rect: Rect, window_rect: Rect) -> (Rect, TkAction) {
        let v = rect.pos - window_rect.pos;
        let off = Offset::conv(rect.size) - Offset::conv(window_rect.size);
        let offset = self.offset.max(v + off).min(v);
        let action = self.set_offset(offset);
        (rect - self.offset, action)
    }

Return the maximum, componentwise

Examples found in repository?
src/event/components.rs (line 154)
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
    pub fn set_offset(&mut self, offset: Offset) -> TkAction {
        let offset = offset.min(self.max_offset).max(Offset::ZERO);
        if offset == self.offset {
            TkAction::empty()
        } else {
            self.offset = offset;
            TkAction::REGION_MOVED
        }
    }

    /// Scroll to make the given `rect` visible
    ///
    /// Inputs and outputs:
    ///
    /// -   `rect`: the rect to focus in child's coordinate space
    /// -   `window_rect`: the rect of the scroll window
    /// -   returned `Rect`: the focus rect, adjusted for scroll offset; this
    ///     may be set via [`EventMgr::set_scroll`]
    /// -   returned `TkAction`: action to pass to the event manager
    pub fn focus_rect(&mut self, rect: Rect, window_rect: Rect) -> (Rect, TkAction) {
        let v = rect.pos - window_rect.pos;
        let off = Offset::conv(rect.size) - Offset::conv(window_rect.size);
        let offset = self.offset.max(v + off).min(v);
        let action = self.set_offset(offset);
        (rect - self.offset, action)
    }

Restrict a value to the specified interval, componentwise

Return the transpose (swap x and y values)

Return the result of component-wise multiplication

Return the result of component-wise division

Return the L1 (rectilinear / taxicab) distance

Return the L-inf (max) distance

Extract one component, based on a direction

This merely extracts the horizontal or vertical component. It never negates it, even if the axis is reversed.

Set one component of self, based on a direction

This does not negate components when the direction is reversed.

Examples found in repository?
src/layout/visitor.rs (line 545)
536
537
538
539
540
541
542
543
544
545
546
547
548
    pub fn size_rules(
        &mut self,
        mgr: SizeMgr,
        axis: AxisInfo,
        child_rules: SizeRules,
        style: FrameStyle,
    ) -> SizeRules {
        let frame_rules = mgr.frame(style, axis);
        let (rules, offset, size) = frame_rules.surround(child_rules);
        self.offset.set_component(axis, offset);
        self.size.set_component(axis, size);
        rules
    }

Construct

Construct, using the same value on all axes

Examples found in repository?
src/geom.rs (line 587)
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
    pub fn shrink(&self, n: i32) -> Rect {
        let pos = self.pos + Offset::splat(n);
        let size = self.size - Size::splat(n + n);
        Rect { pos, size }
    }

    /// Expand self in all directions by the given `n`
    ///
    /// In debug mode this asserts that `n` is non-negative.
    #[inline]
    #[must_use = "method does not modify self but returns a new value"]
    pub fn expand(&self, n: i32) -> Rect {
        debug_assert!(n >= 0);
        let pos = self.pos - Offset::splat(n);
        let size = self.size + Size::splat(n + n);
        Rect { pos, size }
    }

Trait Implementations§

The resulting type after applying the + operator.
Performs the + operation. Read more
The resulting type after applying the + operator.
Performs the + operation. Read more
The resulting type after applying the + operator.
Performs the + operation. Read more
The resulting type after applying the + operator.
Performs the + operation. Read more
Performs the += operation. Read more
Performs the += operation. Read more
Performs the += operation. Read more
Performs the += operation. Read more
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Convert from T to Self Read more
Try converting from T to Self Read more
Try converting from T to Self Read more
Convert from T to Self Read more

Convert an Offset into a Coord

In debug mode this asserts that the result is non-negative.

Try converting from T to Self Read more
Convert from T to Self Read more
Try converting from T to Self Read more
Convert from T to Self Read more

Convert an Offset into a Size

In debug mode this asserts that the result is non-negative.

Try converting from T to Self Read more
Convert from T to Self Read more
Try converting from T to Self Read more
Convert from T to Self Read more
Try converting from T to Self Read more
Convert from T to Self Read more
Try converting from T to Self Read more
Convert from T to Self Read more
Try converting from T to Self, allowing approximation of value Read more
Converting from T to Self, allowing approximation of value Read more
Try converting from T to Self, allowing approximation of value Read more
Converting from T to Self, allowing approximation of value Read more
Try converting to integer with truncation Read more
Try converting to the nearest integer Read more
Try converting the floor to an integer Read more
Try convert the ceiling to an integer Read more
Convert to integer with truncatation Read more
Convert to the nearest integer Read more
Convert the floor to an integer Read more
Convert the ceiling to an integer Read more
Try converting to integer with truncation Read more
Try converting to the nearest integer Read more
Try converting the floor to an integer Read more
Try convert the ceiling to an integer Read more
Convert to integer with truncatation Read more
Convert to the nearest integer Read more
Convert the floor to an integer Read more
Convert the ceiling to an integer Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
The resulting type after applying the / operator.
Performs the / operation. Read more
Converts to this type from the input type.
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
The resulting type after applying the * operator.
Performs the * operation. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Serialize this value into the given Serde serializer. Read more
The resulting type after applying the - operator.
Performs the - operation. Read more
The resulting type after applying the - operator.
Performs the - operation. Read more
The resulting type after applying the - operator.
Performs the - operation. Read more
Performs the -= operation. Read more
Performs the -= operation. Read more
Performs the -= operation. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Cast from Self to T Read more
Try converting from Self to T Read more
Try approximate conversion from Self to T Read more
Cast approximately from Self to T Read more
Cast to integer, truncating Read more
Cast to the nearest integer Read more
Cast the floor to an integer Read more
Cast the ceiling to an integer Read more
Try converting to integer with truncation Read more
Try converting to the nearest integer Read more
Try converting the floor to an integer Read more
Try convert the ceiling to an integer Read more
Try converting from T to Self, allowing approximation of value Read more
Converting from T to Self, allowing approximation of value Read more
Compare self to key and return true if they are equal.

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.