This commit is contained in:
parent
181741fe68
commit
a92c3fdf0c
3 changed files with 32 additions and 50 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -792,6 +792,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "cosmic-jotdown"
|
||||
version = "0.1.0"
|
||||
source = "git+https://git.nations.lol/fnmain/cosmic-jotdown#1207336fd313c970233ab332cf04683fbd7df693"
|
||||
dependencies = [
|
||||
"cosmic-text",
|
||||
"jotdown",
|
||||
|
@ -1031,6 +1032,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "egui-glyphon"
|
||||
version = "0.1.0"
|
||||
source = "git+https://git.nations.lol/fnmain/egui-glyphon#3626c7e55d45734eff9b1b7df04349d97de77667"
|
||||
dependencies = [
|
||||
"egui",
|
||||
"egui-wgpu",
|
||||
|
@ -1628,6 +1630,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "glyphon"
|
||||
version = "0.5.0"
|
||||
source = "git+https://git.nations.lol/fnmain/glyphon.git#01ab64704b123d1ae61a5022b2b8ea2a7a4573e8"
|
||||
dependencies = [
|
||||
"cosmic-text",
|
||||
"etagere",
|
||||
|
@ -1869,6 +1872,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "jotdown"
|
||||
version = "0.3.2"
|
||||
source = "git+https://git.nations.lol/fnmain/jotdown#8239b2b51d2ad3517bb0e71440e7bcd5114e08d2"
|
||||
dependencies = [
|
||||
"databake",
|
||||
]
|
||||
|
|
13
build.rs
13
build.rs
|
@ -12,11 +12,20 @@ fn main() {
|
|||
let file = std::fs::read_to_string(&path).unwrap();
|
||||
let name = path.file_name().unwrap();
|
||||
|
||||
let jot: Cow<'_, [Event<'_>]> = Cow::Owned(jotdown::Parser::new(&file).collect::<Vec<_>>());
|
||||
let mut jot = jotdown::Parser::new(&file).collect::<Vec<_>>();
|
||||
|
||||
jot.push(Event::Start(
|
||||
jotdown::Container::Paragraph,
|
||||
jotdown::Attributes(None),
|
||||
));
|
||||
jot.push(Event::Str("Click anywhere to return to home screen".into()));
|
||||
jot.push(Event::End(jotdown::Container::Paragraph));
|
||||
|
||||
std::fs::write(
|
||||
Path::new(&out).join(name),
|
||||
jot.bake(&Default::default()).to_string(),
|
||||
Cow::Owned::<'_, [Event<'_>]>(jot)
|
||||
.bake(&Default::default())
|
||||
.to_string(),
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
|
|
65
src/app.rs
65
src/app.rs
|
@ -37,7 +37,6 @@ pub struct Portfolio {
|
|||
to_beamwidth: f32,
|
||||
font_system: Arc<Mutex<FontSystem>>,
|
||||
name_buffers: [(Arc<RwLock<Buffer>>, Vec2); 3],
|
||||
click_anywhere_buffer: (Vec2, Arc<RwLock<Buffer>>),
|
||||
window: ContextWindow,
|
||||
buffer_size: Vec2,
|
||||
max_size: Rect,
|
||||
|
@ -62,7 +61,6 @@ pub enum ContextBlock {
|
|||
Image {
|
||||
alt_text: Arc<RwLock<Buffer>>,
|
||||
image: Image<'static>,
|
||||
size: Vec2,
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -253,7 +251,6 @@ impl ContextWindow {
|
|||
ContextBlock::Image {
|
||||
alt_text: Arc::new(RwLock::new(buffer.buffer)),
|
||||
image,
|
||||
size,
|
||||
},
|
||||
);
|
||||
const IMAGE_PADDING: f32 = 8.0;
|
||||
|
@ -274,7 +271,21 @@ impl ContextWindow {
|
|||
res.0 = res.0.translate(Vec2::new(ls.x, 0.0));
|
||||
}
|
||||
} else {
|
||||
last_image_size = Some(size + Vec2::new(IMAGE_PADDING, 0.0));
|
||||
if size.x > max_width {
|
||||
let max_size = Vec2::new(max_width, size.y);
|
||||
let new_size = ImageSize {
|
||||
max_size,
|
||||
..Default::default()
|
||||
}
|
||||
.calc_size(max_size, size);
|
||||
res.0 = Rect::from_min_size(
|
||||
Pos2::new(buffer.indent.indent, self.size.y + paragraph_height),
|
||||
new_size,
|
||||
);
|
||||
self.size.y += new_size.y + paragraph_height;
|
||||
} else {
|
||||
last_image_size = Some(size);
|
||||
}
|
||||
}
|
||||
res
|
||||
} else {
|
||||
|
@ -301,7 +312,6 @@ impl ContextWindow {
|
|||
if let Some(size) = last_image_size {
|
||||
self.size.y += size.y;
|
||||
}
|
||||
self.size.y += CONTEXT_METRICS.line_height * 3.0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -386,18 +396,6 @@ impl Portfolio {
|
|||
"/usr/share/fonts/TTF/FiraCode-Regular.ttf"
|
||||
))));
|
||||
let (buffer_size, name_buffers) = make_buffers(&mut font_system, 1.0);
|
||||
let mut click_anywhere_buffer =
|
||||
egui_glyphon::glyphon::Buffer::new(&mut font_system, Metrics::new(16.0, 18.0));
|
||||
click_anywhere_buffer.set_size(&mut font_system, f32::MAX, f32::MAX);
|
||||
click_anywhere_buffer.set_text(
|
||||
&mut font_system,
|
||||
"Click anywhere to return to home page",
|
||||
Attrs::new()
|
||||
.family(glyphon::Family::SansSerif)
|
||||
.weight(Weight::LIGHT),
|
||||
glyphon::Shaping::Basic,
|
||||
);
|
||||
click_anywhere_buffer.shape_until_scroll(&mut font_system, true);
|
||||
let font_system = Arc::new(Mutex::new(font_system));
|
||||
GlyphonRenderer::insert(
|
||||
cc.wgpu_render_state.as_ref().unwrap(),
|
||||
|
@ -418,10 +416,6 @@ impl Portfolio {
|
|||
to_beamwidth: 2.0,
|
||||
font_system,
|
||||
name_buffers,
|
||||
click_anywhere_buffer: (
|
||||
measure_buffer(&click_anywhere_buffer, Vec2::INFINITY).size(),
|
||||
Arc::new(RwLock::new(click_anywhere_buffer)),
|
||||
),
|
||||
buffer_size,
|
||||
window: ContextWindow::default(),
|
||||
max_size: Rect::ZERO,
|
||||
|
@ -689,38 +683,13 @@ impl eframe::App for Portfolio {
|
|||
_ => {}
|
||||
}
|
||||
}
|
||||
ContextBlock::Image { image, size, .. } => {
|
||||
ContextBlock::Image { image, .. } => {
|
||||
image
|
||||
.clone()
|
||||
.tint(Color32::WHITE.gamma_multiply(zoom_view_opacity))
|
||||
.paint_at(
|
||||
ui,
|
||||
Rect::from_min_size(
|
||||
context_block.0.translate(rect.min.to_vec2()).min,
|
||||
if size.x > rect.width() {
|
||||
let max_size = Vec2::new(rect.width(), size.y);
|
||||
ImageSize {
|
||||
max_size,
|
||||
..Default::default()
|
||||
}
|
||||
.calc_size(max_size, *size)
|
||||
} else {
|
||||
*size
|
||||
},
|
||||
),
|
||||
);
|
||||
.paint_at(ui, context_block.0.translate(rect.min.to_vec2()));
|
||||
}
|
||||
});
|
||||
buffers.push(BufferWithTextArea::new(
|
||||
self.click_anywhere_buffer.1.clone(),
|
||||
Rect::from_min_size(
|
||||
Pos2::new(rect.min.x + 4.0, rect.max.y - 8.0),
|
||||
self.click_anywhere_buffer.0,
|
||||
),
|
||||
zoom_view_opacity,
|
||||
egui_glyphon::glyphon::Color::rgb(255, 255, 255),
|
||||
ui.ctx(),
|
||||
));
|
||||
}
|
||||
let mut hovered = false;
|
||||
if self.zoomed {
|
||||
|
|
Loading…
Reference in a new issue