region: a square size label
This commit is contained in:
1 parent
1627056e00
commit
10a0806662
4 files changed
+17
-8
No files matched your search
@@ -141,7 +141,7 @@ image, a cancel brought the thumbnail back, and a swipe still dismissed it.
|
||||
|
||||
## Polish
|
||||
|
||||
- [ ] Region: while dragging, a `W × H` label follows the pointer (physical pixels, same as the saved PNG), flipping near the edges.
|
||||
- [ ] Region: while dragging, a square-cornered `W × H` label follows the pointer (physical pixels, same as the saved PNG), flipping near the edges.
|
||||
- [ ] Shift locks the dimension you move first; Alt grows from the centre; Space held moves the selection, and after letting go resizing continues without a jump; Space before a drag still switches to window mode.
|
||||
- [ ] `[capture] window_shadow = true`: window shots get a soft shadow following the rounded corners; preview, clipboard and file all have it.
|
||||
- [ ] Each shot is a two-hit "ka-chunk" (macOS-like) with a metallic clatter that grows from shot 2; shots in quick succession play sounds 1 → 5 getting faster and brighter, then 6, 7, 6, 7 (a climbing bell arpeggio over a glide) rising endlessly; every shot about as loud; after a 5 s pause it starts at 1 again. `valw __combo-demo` plays the whole sequence for tuning.
|
||||
|
||||
+2
-1
@@ -178,7 +178,8 @@ impl Surface {
|
||||
((crate::toolbar::draw::measure(&text) + 12.0) as f64 * scale).ceil() as u32,
|
||||
((crate::toolbar::draw::LABEL * 1.2 + 12.0) as f64 * scale).ceil() as u32,
|
||||
);
|
||||
let pill = crate::toolbar::draw::pill(size, scale as f32, &text);
|
||||
// Square corners: sharp, like the rest of the shell.
|
||||
let pill = crate::toolbar::draw::pill(size, scale as f32, &text, 0.0);
|
||||
let at = render::label_origin(
|
||||
(px * scale, py * scale),
|
||||
(pill.width(), pill.height()),
|
||||
|
||||
+13
-5
@@ -7,7 +7,7 @@ use crate::toolbar::layout::{Layout, MenuItem, Rect, Target};
|
||||
use crate::toolbar::state::ToolbarState;
|
||||
|
||||
pub const LABEL: f32 = 13.0;
|
||||
const RADIUS: f32 = 12.0;
|
||||
pub const RADIUS: f32 = 12.0;
|
||||
const BACKGROUND: [u8; 4] = [0x1c, 0x1c, 0x1e, 230];
|
||||
const SELECTED: [u8; 4] = [255, 255, 255, 46];
|
||||
const HOVER: [u8; 4] = [255, 255, 255, 26];
|
||||
@@ -130,8 +130,9 @@ pub fn bar(
|
||||
p
|
||||
}
|
||||
|
||||
/// The countdown pill: a rounded background with `text` centred.
|
||||
pub fn pill(size: (u32, u32), scale: f32, s: &str) -> Pixmap {
|
||||
/// A pill: a background with corners of `radius` and `text` centred (the
|
||||
/// countdown is rounded, the region's size label square).
|
||||
pub fn pill(size: (u32, u32), scale: f32, s: &str, radius: f32) -> Pixmap {
|
||||
let mut p = Pixmap::new(size.0.max(1), size.1.max(1)).expect("the pill has a size");
|
||||
let r = Rect {
|
||||
x: 0.0,
|
||||
@@ -139,7 +140,7 @@ pub fn pill(size: (u32, u32), scale: f32, s: &str) -> Pixmap {
|
||||
w: size.0 as f32 / scale,
|
||||
h: size.1 as f32 / scale,
|
||||
};
|
||||
rounded(&mut p, r, RADIUS, BACKGROUND, scale);
|
||||
rounded(&mut p, r, radius, BACKGROUND, scale);
|
||||
let left = (r.w - measure(s)) / 2.0;
|
||||
label(&mut p, r, left, s, scale);
|
||||
p
|
||||
@@ -220,9 +221,16 @@ mod tests {
|
||||
assert_eq!(out, [30, 20, 10, 255]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_square_pill_fills_its_corners() {
|
||||
let corner = |p: &Pixmap| p.pixel(0, 0).unwrap().alpha();
|
||||
assert_eq!(corner(&pill((72, 40), 1.0, "5", RADIUS)), 0, "rounded");
|
||||
assert!(corner(&pill((72, 40), 1.0, "5", 0.0)) > 200, "square");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn the_pill_shows_its_text() {
|
||||
let p = pill((72, 40), 1.0, "5");
|
||||
let p = pill((72, 40), 1.0, "5", RADIUS);
|
||||
let lit = p
|
||||
.pixels()
|
||||
.iter()
|
||||
|
||||
+1
-1
@@ -380,7 +380,7 @@ impl Pill {
|
||||
(PILL.0 as f64 * self.scale).round() as u32,
|
||||
(PILL.1 as f64 * self.scale).round() as u32,
|
||||
);
|
||||
let pixmap = draw::pill((pw, ph), self.scale as f32, &self.text);
|
||||
let pixmap = draw::pill((pw, ph), self.scale as f32, &self.text, draw::RADIUS);
|
||||
let Ok((buffer, canvas)) = self.pool.create_buffer(
|
||||
pw as i32,
|
||||
ph as i32,
|
||||
|
||||
Reference in new issue
Block a user