Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1096c3167a | ||
|
|
445287c95c |
No files matched your search
@@ -148,20 +148,20 @@ impl LayoutLen {
|
|||||||
/// Only pixels: the same number of them whatever box it lands in, and
|
/// Only pixels: the same number of them whatever box it lands in, and
|
||||||
/// whatever anyone else in the row asks for. A length that is any part
|
/// whatever anyone else in the row asks for. A length that is any part
|
||||||
/// of a box or of what is left over is not one.
|
/// of a box or of what is left over is not one.
|
||||||
pub fn is_px(self) -> bool {
|
pub fn is_px(&self) -> bool {
|
||||||
self.rel == Rel::ZERO && self.leftover == Weight::ZERO
|
self.rel == Rel::ZERO && self.leftover == Weight::ZERO
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Nothing but a claim on what is left over, so there is no length here
|
/// Nothing but a claim on what is left over, so there is no length here
|
||||||
/// at all where nothing is.
|
/// at all where nothing is.
|
||||||
pub fn is_only_leftover(self) -> bool {
|
pub fn is_only_leftover(&self) -> bool {
|
||||||
self.leftover > Weight::ZERO && self.without_leftover() == Len::ZERO
|
self.leftover > Weight::ZERO && self.without_leftover() == Len::ZERO
|
||||||
}
|
}
|
||||||
|
|
||||||
/// This as a length of a box, where it is one. `leftover` is not: a
|
/// This as a length of a box, where it is one. `leftover` is not: a
|
||||||
/// share of what is left over is a length only to whoever divides one,
|
/// share of what is left over is a length only to whoever divides one,
|
||||||
/// so it passes up in the reported size instead and is resolved there.
|
/// so it passes up in the reported size instead and is resolved there.
|
||||||
pub fn declared(self) -> Option<Len> {
|
pub fn declared(&self) -> Option<Len> {
|
||||||
(self.leftover == Weight::ZERO).then(|| self.without_leftover())
|
(self.leftover == Weight::ZERO).then(|| self.without_leftover())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,17 +29,17 @@ impl Holds {
|
|||||||
Self { lo: len, hi: len }
|
Self { lo: len, hi: len }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const fn contains(self, len: Px) -> bool {
|
pub const fn contains(&self, len: Px) -> bool {
|
||||||
len.raw() >= self.lo.raw() && len.raw() <= self.hi.raw()
|
len.raw() >= self.lo.raw() && len.raw() <= self.hi.raw()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Every length `other` holds for is one this holds for, so a drawing
|
/// Every length `other` holds for is one this holds for, so a drawing
|
||||||
/// made under this range is still good wherever `other` is.
|
/// made under this range is still good wherever `other` is.
|
||||||
pub const fn covers(self, other: Self) -> bool {
|
pub const fn covers(&self, other: Self) -> bool {
|
||||||
self.lo.raw() <= other.lo.raw() && self.hi.raw() >= other.hi.raw()
|
self.lo.raw() <= other.lo.raw() && self.hi.raw() >= other.hi.raw()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const fn and(self, other: Self) -> Self {
|
pub const fn and(&self, other: Self) -> Self {
|
||||||
Self {
|
Self {
|
||||||
lo: self.lo.max(other.lo),
|
lo: self.lo.max(other.lo),
|
||||||
hi: self.hi.min(other.hi),
|
hi: self.hi.min(other.hi),
|
||||||
@@ -57,7 +57,7 @@ impl Holds {
|
|||||||
/// boxes therefore give one length. That is a floor rather than an
|
/// boxes therefore give one length. That is a floor rather than an
|
||||||
/// allowance: inverting it is two divisions and nothing else, and the
|
/// allowance: inverting it is two divisions and nothing else, and the
|
||||||
/// whole of a box maps back to itself.
|
/// whole of a box maps back to itself.
|
||||||
pub const fn through(self, len: Len) -> Self {
|
pub const fn through(&self, len: Len) -> Self {
|
||||||
if self.lo.raw() == Px::MIN.raw() && self.hi.raw() == Px::MAX.raw() {
|
if self.lo.raw() == Px::MIN.raw() && self.hi.raw() == Px::MAX.raw() {
|
||||||
return Self::ANY;
|
return Self::ANY;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ impl AxisHolds {
|
|||||||
region_len: None,
|
region_len: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn and(self, other: Self) -> Self {
|
pub fn and(&self, other: Self) -> Self {
|
||||||
// Two pins of the same length disagreeing would mean one drawing was
|
// Two pins of the same length disagreeing would mean one drawing was
|
||||||
// a fraction of two different lengths at once.
|
// a fraction of two different lengths at once.
|
||||||
debug_assert!(
|
debug_assert!(
|
||||||
@@ -53,7 +53,7 @@ impl AxisHolds {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn covers(self, other: Self) -> bool {
|
pub fn covers(&self, other: Self) -> bool {
|
||||||
self.window.covers(other.window)
|
self.window.covers(other.window)
|
||||||
&& self.region.covers(other.region)
|
&& self.region.covers(other.region)
|
||||||
&& self
|
&& self
|
||||||
@@ -64,7 +64,7 @@ impl AxisHolds {
|
|||||||
|
|
||||||
/// Whether a widget in a box `len` long, with that rel base, in that
|
/// Whether a widget in a box `len` long, with that rel base, in that
|
||||||
/// window, is one this drawing holds for.
|
/// window, is one this drawing holds for.
|
||||||
pub fn contains(self, window: Px, rel_base: Len, len: Len) -> bool {
|
pub fn contains(&self, window: Px, rel_base: Len, len: Len) -> bool {
|
||||||
self.window.contains(window)
|
self.window.contains(window)
|
||||||
&& self.rel_base.is_none_or(|pinned| pinned == rel_base)
|
&& self.rel_base.is_none_or(|pinned| pinned == rel_base)
|
||||||
&& self.region.contains(len.to_px(window))
|
&& self.region.contains(len.to_px(window))
|
||||||
@@ -87,18 +87,18 @@ impl LayoutHolds {
|
|||||||
y: AxisHolds::ANY,
|
y: AxisHolds::ANY,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn and(self, other: Self) -> Self {
|
pub fn and(&self, other: Self) -> Self {
|
||||||
Self {
|
Self {
|
||||||
x: self.x.and(other.x),
|
x: self.x.and(other.x),
|
||||||
y: self.y.and(other.y),
|
y: self.y.and(other.y),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn covers(self, other: Self) -> bool {
|
pub fn covers(&self, other: Self) -> bool {
|
||||||
self.x.covers(other.x) && self.y.covers(other.y)
|
self.x.covers(other.x) && self.y.covers(other.y)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn contains(self, window: PxVec2, rel_base: UiVec2, region: UiRegion) -> bool {
|
pub fn contains(&self, window: PxVec2, rel_base: UiVec2, region: UiRegion) -> bool {
|
||||||
Axis::BOTH
|
Axis::BOTH
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.all(|axis| self[axis].contains(window[axis], rel_base[axis], region[axis].len()))
|
.all(|axis| self[axis].contains(window[axis], rel_base[axis], region[axis].len()))
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
use crate::layout_diagnostics::{self as diag, Counter};
|
use crate::layout_diagnostics::{self as diag, Counter};
|
||||||
use crate::{
|
use crate::{
|
||||||
Axis, Declared, Holds, LayoutHolds, LayoutLen, Len, PlaceDesc, Px, PxVec2, RegionAlign, Rel,
|
Axis, Declared, Holds, LayoutHolds, LayoutLen, Len, PlaceDesc, Px, PxVec2, RegionAlign, Rel,
|
||||||
RenderedText, RetainedPrimitive, Size, StrongWidget, TextAttrs, TextBuffer, TextData,
|
RenderedText, RetainedPrimitive, Size, StrongWidget, TextAttrs, TextBuffer, TextureHandle,
|
||||||
TextureHandle, UiRegion, UiRenderState, UiRsc, UiVec2, Weight, WidgetId, Widgets,
|
UiRegion, UiRenderState, UiRsc, UiVec2, Weight, WidgetId, Widgets,
|
||||||
render::{
|
render::{
|
||||||
GlyphPrimitive, Mask, MaskIdx, MoveIdx, Primitive, PrimitiveInst, PrimitiveKind,
|
GlyphPrimitive, Mask, MaskIdx, MoveIdx, Primitive, PrimitiveInst, PrimitiveKind,
|
||||||
TexturePrimitive,
|
TexturePrimitive,
|
||||||
@@ -497,10 +497,6 @@ impl<'a> Painter<'a> {
|
|||||||
self.own[axis].window = holds;
|
self.own[axis].window = holds;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn text_data(&mut self) -> &mut TextData {
|
|
||||||
&mut self.rsc.ui_mut().text
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn child_layer(&mut self) {
|
pub fn child_layer(&mut self) {
|
||||||
self.layer = self.state.layers.child(self.layer);
|
self.layer = self.state.layers.child(self.layer);
|
||||||
}
|
}
|
||||||
@@ -665,7 +661,7 @@ impl Widgets {
|
|||||||
// the box it was offered.
|
// the box it was offered.
|
||||||
widget
|
widget
|
||||||
.and_then(|widget| widget.size_hint(axis))
|
.and_then(|widget| widget.size_hint(axis))
|
||||||
.and_then(LayoutLen::declared)
|
.and_then(|len| len.declared())
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -679,7 +675,7 @@ impl LayoutLen {
|
|||||||
/// the rule already gave the region its length, and the rule's length is
|
/// the rule already gave the region its length, and the rule's length is
|
||||||
/// what the widget reports there. And an axis the parent decided from
|
/// what the widget reports there. And an axis the parent decided from
|
||||||
/// the answer is the answer already.
|
/// the answer is the answer already.
|
||||||
pub(super) fn fills(self, declared: Option<Len>, decided: bool) -> bool {
|
pub(super) fn fills(&self, declared: Option<Len>, decided: bool) -> bool {
|
||||||
self.leftover != Weight::ZERO || declared.is_some() || decided
|
self.leftover != Weight::ZERO || declared.is_some() || decided
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1167,7 +1167,7 @@ impl Size {
|
|||||||
/// in. Both are lengths of the window, so the comparison is in its
|
/// in. Both are lengths of the window, so the comparison is in its
|
||||||
/// pixels. A share is a length only to whoever divides one, so it is not
|
/// pixels. A share is a length only to whoever divides one, so it is not
|
||||||
/// a claim about this box and cannot exceed it.
|
/// a claim about this box and cannot exceed it.
|
||||||
fn within_box(self, region: UiRegion, window: PxVec2, axis: Axis) -> bool {
|
fn within_box(&self, region: UiRegion, window: PxVec2, axis: Axis) -> bool {
|
||||||
let len = self[axis];
|
let len = self[axis];
|
||||||
let window = window[axis];
|
let window = window[axis];
|
||||||
len.leftover != Weight::ZERO
|
len.leftover != Weight::ZERO
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ impl SizeRule {
|
|||||||
/// The length this rule gives without the widget being drawn, if it can
|
/// The length this rule gives without the widget being drawn, if it can
|
||||||
/// give one.
|
/// give one.
|
||||||
pub fn declared(&self) -> Option<Len> {
|
pub fn declared(&self) -> Option<Len> {
|
||||||
self.exact().and_then(LayoutLen::declared)
|
self.exact().and_then(|len| len.declared())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The length this rule gives outright, whatever the widget reports --
|
/// The length this rule gives outright, whatever the widget reports --
|
||||||
|
|||||||
Reference in new issue
Block a user