Skip to content

Commit

Permalink
Merge branch '0.10.2_patches' into open_file_explorer
Browse files Browse the repository at this point in the history
  • Loading branch information
Doublonmousse authored Jun 8, 2024
2 parents 0272d10 + 96b0a03 commit 922a690
Show file tree
Hide file tree
Showing 28 changed files with 786 additions and 147 deletions.
370 changes: 339 additions & 31 deletions Cargo.lock

Large diffs are not rendered by default.

40 changes: 20 additions & 20 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,63 +25,63 @@ anyhow = "1.0"
approx = "0.5.1"
async-fs = "2.1"
atty = "0.2.14"
base64 = "0.22.0"
cairo-rs = { version = "0.19.2", features = ["v1_18", "png", "svg", "pdf"] }
chrono = "0.4.34"
clap = { version = "4.4", features = ["derive"] }
base64 = "0.22.1"
cairo-rs = { version = "0.19.4", features = ["v1_18", "png", "svg", "pdf"] }
chrono = "0.4.38"
clap = { version = "4.5", features = ["derive"] }
dialoguer = "0.11.0"
flate2 = "1.0"
fs_extra = "1.3"
futures = "0.3.30"
geo = "0.28.0"
gettext-rs = { version = "0.7.0", features = ["gettext-system"] }
gio = "0.19.2"
glib = "0.19.2"
gio = "0.19.5"
glib = "0.19.7"
glib-build-tools = "0.19.0"
gtk4 = { version = "0.8.0", features = ["v4_12"] }
gtk4 = { version = "0.8.2", features = ["v4_12"] }
ijson = "0.1.3"
image = "0.24.9"
image = "0.25.1"
indicatif = "0.17.8"
ink-stroke-modeler-rs = { git = "https://github.com/flxzt/ink-stroke-modeler-rs", rev = "84d311e9b0d034dcd955a1f353d37f54b2bda70f" }
itertools = "0.12.1"
itertools = "0.13.0"
kurbo = "0.10.4"
librsvg = "2.58.0-beta.1"
nalgebra = { version = "0.32.4", features = ["serde-serialize"] }
librsvg = "2.58.1"
nalgebra = { version = "0.32.5", features = ["serde-serialize"] }
notify-debouncer-full = "0.3.1"
num-derive = "0.4.2"
num-traits = "0.2.18"
numeric-sort = "0.1.0"
num-traits = "0.2.19"
numeric-sort = "0.1.1"
once_cell = "1.19"
opener = {version = "0.7.0", features=["reveal"]}
palette = "0.7.5"
parry2d-f64 = { version = "0.13.6", features = ["serde-serialize"] }
palette = "0.7.6"
parry2d-f64 = { version = "0.15.1", features = ["serde-serialize"] }
path-absolutize = "3.1"
piet = "0.6.2"
piet-cairo = "0.6.2"
rand = "0.8.5"
rand_distr = "0.4.3"
rand_pcg = "0.3.1"
rayon = "1.9"
rayon = "1.10"
regex = "1.10"
rodio = { version = "0.17.3", default-features = false, features = [
rodio = { version = "0.18.1", default-features = false, features = [
"symphonia-wav",
] }
rough_piet = "0.6.0"
roughr = "0.6.0"
roxmltree = "0.19.0"
roxmltree = "0.20.0"
rstar = "0.12.0"
semver = { version = "1.0", features = ["serde"] }
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0"
slotmap = { version = "1.0", features = ["serde"] }
smol = "2.0"
svg = "0.16.0"
svg = "0.17.0"
thiserror = "1.0"
tracing = "0.1.40"
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
unicode-segmentation = "1.11"
url = "2.5"
usvg = "0.41.0"
usvg = "0.42.0"
winresource = "0.1.17"
xmlwriter = "0.1.0"
# Enabling feature > v20_9 causes linker errors on mingw
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ To be able to open and export older files that are incompatible with the newest

## License

Rnote is available under the GPL-3.0-or-later. See the LICENSE file for more info.
Rnote is available under GPL-3.0-or-later. See the LICENSE file for more info.

Copyright (C) 2023 The Rnote Authors

Expand Down
3 changes: 3 additions & 0 deletions crates/rnote-compose/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ pub mod style;
pub mod transform;
/// other misc utilities
pub mod utils;
/// vertical tool options
pub mod verticaltoolconfig;

// Re-exports
pub use color::Color;
Expand All @@ -42,6 +44,7 @@ pub use shapes::Shape;
pub use splitorder::SplitOrder;
pub use style::Style;
pub use transform::Transform;
pub use verticaltoolconfig::VerticalToolConfig;

// Renames
extern crate nalgebra as na;
Expand Down
12 changes: 12 additions & 0 deletions crates/rnote-compose/src/verticaltoolconfig.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
/// configuration for the vertical tool
pub struct VerticalToolConfig {
/// forces the snap behavior for the vertical space tool
pub force_snap: bool,
/// horizontal limit
pub horizontal_border: bool,
/// vertical limit
pub vertical_border: bool,
}
17 changes: 9 additions & 8 deletions crates/rnote-engine/src/document/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ pub use format::Format;

// Imports
use crate::{Camera, CloneConfig, StrokeStore, WidgetFlags};
use core::fmt::Display;
use p2d::bounding_volume::{Aabb, BoundingVolume};
use rnote_compose::ext::{AabbExt, Vector2Ext};
use rnote_compose::{Color, SplitOrder};
Expand Down Expand Up @@ -69,13 +70,13 @@ impl std::str::FromStr for Layout {
}
}

impl std::string::ToString for Layout {
fn to_string(&self) -> String {
impl Display for Layout {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Layout::FixedSize => String::from("fixed-size"),
Layout::ContinuousVertical => String::from("continuous-vertical"),
Layout::SemiInfinite => String::from("semi-infinite"),
Layout::Infinite => String::from("infinite"),
Layout::FixedSize => write!(f, "fixed-size"),
Layout::ContinuousVertical => write!(f, "continuous-vertical"),
Layout::SemiInfinite => write!(f, "semi-infinite"),
Layout::Infinite => write!(f, "infinite"),
}
}
}
Expand Down Expand Up @@ -404,12 +405,12 @@ impl Document {
/// Snap the position to the document and pattern grid when `snap_positions` is enabled.
///
/// If not, the original coordinates are returned.
pub(crate) fn snap_position(&self, pos: na::Vector2<f64>) -> na::Vector2<f64> {
pub(crate) fn snap_position(&self, pos: na::Vector2<f64>, force: bool) -> na::Vector2<f64> {
const DOCUMENT_SNAP_DIST: f64 = 10.;
let doc_format_size = self.format.size();
let pattern_size = self.background.pattern_size;

if !self.snap_positions {
if !self.snap_positions && !force {
return pos;
}

Expand Down
22 changes: 12 additions & 10 deletions crates/rnote-engine/src/engine/export.rs
Original file line number Diff line number Diff line change
Expand Up @@ -760,10 +760,8 @@ impl Engine {
let result = || -> Result<Vec<Vec<u8>>, anyhow::Error> {
let image_format = match doc_pages_export_prefs.export_format {
DocPagesExportFormat::Svg => return Err(anyhow::anyhow!("Extracting bitmap image format from doc pages export prefs failed, not set to a bitmap format.")),
DocPagesExportFormat::Png => image::ImageOutputFormat::Png,
DocPagesExportFormat::Jpeg => {
image::ImageOutputFormat::Jpeg(doc_pages_export_prefs.jpeg_quality)
}
DocPagesExportFormat::Png => image::ImageFormat::Png,
DocPagesExportFormat::Jpeg => image::ImageFormat::Jpeg,
};
pages_contents
.into_par_iter()
Expand All @@ -780,7 +778,10 @@ impl Engine {
"Generating Svg for page {i} failed, returned None."
))?
.gen_image(doc_pages_export_prefs.bitmap_scalefactor)?
.into_encoded_bytes(image_format.clone())
.into_encoded_bytes(
image_format,
Some(doc_pages_export_prefs.jpeg_quality),
)
})
.collect()
};
Expand Down Expand Up @@ -886,15 +887,16 @@ impl Engine {
};
let image_format = match selection_export_prefs.export_format {
SelectionExportFormat::Svg => return Err(anyhow::anyhow!("Extracting bitmap image format from doc pages export prefs failed, not set to a bitmap format.")),
SelectionExportFormat::Png => image::ImageOutputFormat::Png,
SelectionExportFormat::Jpeg => {
image::ImageOutputFormat::Jpeg(selection_export_prefs.jpeg_quality)
}
SelectionExportFormat::Png => image::ImageFormat::Png,
SelectionExportFormat::Jpeg => image::ImageFormat::Jpeg
};

Ok(Some(
svg.gen_image(selection_export_prefs.bitmap_scalefactor)?
.into_encoded_bytes(image_format)?,
.into_encoded_bytes(
image_format,
Some(selection_export_prefs.jpeg_quality),
)?,
))
};
if oneshot_sender.send(result()).is_err() {
Expand Down
17 changes: 9 additions & 8 deletions crates/rnote-engine/src/pens/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ pub use typewriter::Typewriter;
// Imports
use crate::engine::{EngineView, EngineViewMut};
use crate::{DrawableOnDoc, WidgetFlags};
use core::fmt::Display;
use futures::channel::oneshot;
use piet_cairo::CairoRenderContext;
use rnote_compose::penevent::PenProgress;
Expand Down Expand Up @@ -232,15 +233,15 @@ impl std::str::FromStr for PenStyle {
}
}

impl std::string::ToString for PenStyle {
fn to_string(&self) -> String {
impl Display for PenStyle {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
PenStyle::Brush => String::from("brush"),
PenStyle::Shaper => String::from("shaper"),
PenStyle::Typewriter => String::from("typewriter"),
PenStyle::Eraser => String::from("eraser"),
PenStyle::Selector => String::from("selector"),
PenStyle::Tools => String::from("tools"),
PenStyle::Brush => write!(f, "brush"),
PenStyle::Shaper => write!(f, "shaper"),
PenStyle::Typewriter => write!(f, "typewriter"),
PenStyle::Eraser => write!(f, "eraser"),
PenStyle::Selector => write!(f, "selector"),
PenStyle::Tools => write!(f, "tools"),
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions crates/rnote-engine/src/pens/pensconfig/toolsconfig.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// Imports
use rnote_compose::VerticalToolConfig;
use serde::{Deserialize, Serialize};

#[derive(
Expand Down Expand Up @@ -45,4 +46,5 @@ impl TryFrom<u32> for ToolStyle {
pub struct ToolsConfig {
#[serde(rename = "style")]
pub style: ToolStyle,
pub vertical_tool_config: VerticalToolConfig,
}
4 changes: 2 additions & 2 deletions crates/rnote-engine/src/pens/selector/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ impl PenBehaviour for Selector {
// Add rendered Png
let image = stroke_content_svg
.gen_image(Engine::STROKE_EXPORT_IMAGE_SCALE)?
.into_encoded_bytes(image::ImageOutputFormat::Png)?;
.into_encoded_bytes(image::ImageFormat::Png, None)?;
clipboard_content.push((image, String::from("image/png")));
}
}
Expand Down Expand Up @@ -255,7 +255,7 @@ impl PenBehaviour for Selector {
// Add rendered Png
let image = stroke_content_svg
.gen_image(Engine::STROKE_EXPORT_IMAGE_SCALE)?
.into_encoded_bytes(image::ImageOutputFormat::Png)?;
.into_encoded_bytes(image::ImageFormat::Png, None)?;
clipboard_content.push((image, String::from("image/png")));
}
}
Expand Down
4 changes: 2 additions & 2 deletions crates/rnote-engine/src/pens/selector/penevents.rs
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ impl Selector {

let offset = engine_view
.document
.snap_position(snap_corner_pos + (element.pos - *current_pos))
.snap_position(snap_corner_pos + (element.pos - *current_pos), false)
- snap_corner_pos;

if offset.magnitude()
Expand Down Expand Up @@ -303,7 +303,7 @@ impl Selector {
if !lock_aspectratio {
offset_to_start = engine_view
.document
.snap_position(snap_corner_pos + offset_to_start)
.snap_position(snap_corner_pos + offset_to_start, false)
- snap_corner_pos;
}
offset_to_start = match from_corner {
Expand Down
Loading

0 comments on commit 922a690

Please sign in to comment.