Skip to content
Snippets Groups Projects
Commit 1d47f6bf authored by Per's avatar Per
Browse files

forbid resize of drawable surface

parent 2f1b5052
No related branches found
No related tags found
No related merge requests found
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
use std::f64::consts::PI; use std::f64::consts::PI;
use druid::kurbo::Line; use druid::kurbo::{BezPath, Line};
use druid::widget::{Flex, Label, WidgetExt}; use druid::widget::{Flex, Label, WidgetExt};
use druid::{ use druid::{
AppLauncher, BoxConstraints, Color, Env, Event, EventCtx, LayoutCtx, LinearGradient, PaintCtx, AppLauncher, BoxConstraints, Color, Env, Event, EventCtx, LayoutCtx, LinearGradient, PaintCtx,
...@@ -40,6 +40,7 @@ impl Widget<()> for DrawWidget { ...@@ -40,6 +40,7 @@ impl Widget<()> for DrawWidget {
match event { match event {
Event::MouseDown(m) => { Event::MouseDown(m) => {
info!("down: pos {:?}", m.pos); info!("down: pos {:?}", m.pos);
//info!("down: pos {:?}, pos_rel {:?}", m.pos);
self.state = MouseState::Down; self.state = MouseState::Down;
self.t = 0.0; self.t = 0.0;
self.points.push(m.pos); self.points.push(m.pos);
...@@ -62,7 +63,10 @@ impl Widget<()> for DrawWidget { ...@@ -62,7 +63,10 @@ impl Widget<()> for DrawWidget {
} }
} }
fn update(&mut self, _ctx: &mut UpdateCtx, _old_data: Option<&()>, _data: &(), _env: &Env) {} fn update(&mut self, ctx: &mut UpdateCtx, _old_data: Option<&()>, _data: &(), env: &Env) {
//info!("update {:?}", env.get());
ctx.invalidate();
}
fn layout( fn layout(
&mut self, &mut self,
...@@ -75,33 +79,21 @@ impl Widget<()> for DrawWidget { ...@@ -75,33 +79,21 @@ impl Widget<()> for DrawWidget {
} }
fn paint(&mut self, paint_ctx: &mut PaintCtx, _data: &(), _env: &Env) { fn paint(&mut self, paint_ctx: &mut PaintCtx, _data: &(), _env: &Env) {
// let center = Point::new(50.0, 50.0);
// let ambit = center + 45.0 * Vec2::from_angle((0.75 + self.t) * 2.0 * PI);
// paint_ctx.stroke(Line::new(center, ambit), &Color::WHITE, 10.0);
info!("paint"); info!("paint");
if let Some(mut old) = self.points.iter().next() {
for new in self.points.iter() { if let Some(p) = self.points.iter().next() {
let p1 = Point::new(1.0, 2.0); let mut path = BezPath::new();
let line = Line::new(*old, *new); path.move_to(*p);
paint_ctx.stroke(line, &Color::WHITE, 1.0);
old = new; for p in self.points.iter() {
path.line_to(*p);
} }
paint_ctx.stroke(path, &Color::WHITE, 1.0);
} }
} }
} }
// fn main() {
// let window = WindowDesc::new(|| AnimWidget {
// state: MouseState::Up,
// points: Vec::new(),
// t: 0.0,
// });
// AppLauncher::with_window(window)
// .use_simple_logger()
// .launch(0)
// .expect("launch failed");
// }
fn build_app() -> impl Widget<()> { fn build_app() -> impl Widget<()> {
let solid = Color::rgb8(0x3a, 0x3a, 0x3a); let solid = Color::rgb8(0x3a, 0x3a, 0x3a);
let gradient = LinearGradient::new( let gradient = LinearGradient::new(
...@@ -117,7 +109,7 @@ fn build_app() -> impl Widget<()> { ...@@ -117,7 +109,7 @@ fn build_app() -> impl Widget<()> {
Label::new("top left") Label::new("top left")
.border(gradient.clone(), 4.0) .border(gradient.clone(), 4.0)
.padding(10.0), .padding(10.0),
1.0, 1.0, // horizontal
) )
.with_child( .with_child(
DrawWidget { DrawWidget {
...@@ -127,7 +119,7 @@ fn build_app() -> impl Widget<()> { ...@@ -127,7 +119,7 @@ fn build_app() -> impl Widget<()> {
} }
.border(gradient.clone(), 4.0) .border(gradient.clone(), 4.0)
.padding(10.0), .padding(10.0),
1.0, 0.0,
) )
.with_child( .with_child(
Label::new("top right") Label::new("top right")
...@@ -135,7 +127,7 @@ fn build_app() -> impl Widget<()> { ...@@ -135,7 +127,7 @@ fn build_app() -> impl Widget<()> {
.padding(10.0), .padding(10.0),
1.0, 1.0,
), ),
1.0, 0.0, // vertical
) )
.with_child( .with_child(
Flex::row() Flex::row()
...@@ -144,7 +136,7 @@ fn build_app() -> impl Widget<()> { ...@@ -144,7 +136,7 @@ fn build_app() -> impl Widget<()> {
.background(gradient.clone()) .background(gradient.clone())
.rounded(10.0) .rounded(10.0)
.padding(10.0), .padding(10.0),
1.0, 0.0,
) )
.with_child( .with_child(
Label::new("bottom right") Label::new("bottom right")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment