Skip to content

Commit 9f9d92e

Browse files
committed
Store rect within PixmapScaling
1 parent 0db7a73 commit 9f9d92e

File tree

4 files changed

+21
-7
lines changed

4 files changed

+21
-7
lines changed

crates/kas-core/src/layout/size_types.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,8 @@ impl_scope! {
238238
///
239239
/// If is `None`, max size is limited to ideal size.
240240
pub stretch: Stretch,
241+
/// The assigned [`Rect`]
242+
pub rect: Rect,
241243
}
242244
}
243245

@@ -260,7 +262,7 @@ impl PixmapScaling {
260262
/// Constrains and aligns within `rect`
261263
///
262264
/// The resulting size is then aligned using the `align` hints, defaulting to centered.
263-
pub fn align_rect(&mut self, rect: Rect, align: AlignPair, scale_factor: f32) -> Rect {
265+
pub fn set_rect(&mut self, rect: Rect, align: AlignPair, scale_factor: f32) {
264266
let mut size = rect.size;
265267

266268
if self.stretch == Stretch::None {
@@ -280,7 +282,7 @@ impl PixmapScaling {
280282
}
281283
}
282284

283-
align.aligned_rect(size, rect)
285+
self.rect = align.aligned_rect(size, rect);
284286
}
285287
}
286288

crates/kas-resvg/src/canvas.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -160,16 +160,20 @@ impl_scope! {
160160
}
161161

162162
impl Layout for Self {
163+
fn rect(&self) -> Rect {
164+
self.scaling.rect
165+
}
166+
163167
fn size_rules(&mut self, sizer: SizeCx, axis: AxisInfo) -> SizeRules {
164168
self.scaling.size_rules(sizer, axis)
165169
}
166170

167171
fn set_rect(&mut self, cx: &mut ConfigCx, rect: Rect, hints: AlignHints) {
168172
let align = hints.complete_default();
169173
let scale_factor = cx.size_cx().scale_factor();
170-
widget_set_rect!(self.scaling.align_rect(rect, align, scale_factor));
171-
let size = self.rect().size.cast();
174+
self.scaling.set_rect(rect, align, scale_factor);
172175

176+
let size = self.rect().size.cast();
173177
if let Some(fut) = self.inner.get_mut().resize(size) {
174178
cx.push_spawn(self.id(), fut);
175179
}

crates/kas-resvg/src/svg.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -242,16 +242,20 @@ impl_scope! {
242242
}
243243

244244
impl Layout for Self {
245+
fn rect(&self) -> Rect {
246+
self.scaling.rect
247+
}
248+
245249
fn size_rules(&mut self, sizer: SizeCx, axis: AxisInfo) -> SizeRules {
246250
self.scaling.size_rules(sizer, axis)
247251
}
248252

249253
fn set_rect(&mut self, cx: &mut ConfigCx, rect: Rect, hints: AlignHints) {
250254
let align = hints.complete_default();
251255
let scale_factor = cx.size_cx().scale_factor();
252-
widget_set_rect!(self.scaling.align_rect(rect, align, scale_factor));
253-
let size: (u32, u32) = self.rect().size.cast();
256+
self.scaling.set_rect(rect, align, scale_factor);
254257

258+
let size: (u32, u32) = self.rect().size.cast();
255259
if let Some(fut) = self.inner.resize(size) {
256260
cx.push_spawn(self.id(), fut);
257261
}

crates/kas-widgets/src/image.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -167,14 +167,18 @@ impl_scope! {
167167
}
168168

169169
impl Layout for Image {
170+
fn rect(&self) -> Rect {
171+
self.scaling.rect
172+
}
173+
170174
fn size_rules(&mut self, sizer: SizeCx, axis: AxisInfo) -> SizeRules {
171175
self.scaling.size_rules(sizer, axis)
172176
}
173177

174178
fn set_rect(&mut self, cx: &mut ConfigCx, rect: Rect, hints: AlignHints) {
175179
let align = hints.complete_default();
176180
let scale_factor = cx.size_cx().scale_factor();
177-
widget_set_rect!(self.scaling.align_rect(rect, align, scale_factor));
181+
self.scaling.set_rect(rect, align, scale_factor);
178182
}
179183

180184
fn draw(&self, mut draw: DrawCx) {

0 commit comments

Comments
 (0)