@@ -569,7 +569,8 @@ impl MessageHandler<GraphOperationMessage, GraphOperationMessageData<'_>> for Gr
569
569
parent,
570
570
insert_index,
571
571
} => {
572
- let tree = match usvg:: Tree :: from_str ( & svg, & usvg:: Options :: default ( ) ) {
572
+ let database = usvg:: fontdb:: Database :: new ( ) ;
573
+ let tree = match usvg:: Tree :: from_str ( & svg, & usvg:: Options :: default ( ) , & database) {
573
574
Ok ( t) => t,
574
575
Err ( e) => {
575
576
responses. add ( DocumentMessage :: DocumentHistoryBackward ) ;
@@ -582,7 +583,7 @@ impl MessageHandler<GraphOperationMessage, GraphOperationMessageData<'_>> for Gr
582
583
} ;
583
584
let mut modify_inputs = ModifyInputsContext :: new ( document_network, document_metadata, node_graph, responses) ;
584
585
585
- import_usvg_node ( & mut modify_inputs, & usvg:: Node :: Group ( Box :: new ( tree. root ) ) , transform, id, parent, insert_index) ;
586
+ import_usvg_node ( & mut modify_inputs, & usvg:: Node :: Group ( Box :: new ( tree. root ( ) . clone ( ) ) ) , transform, id, parent, insert_index) ;
586
587
load_network_structure ( document_network, document_metadata, collapsed) ;
587
588
}
588
589
GraphOperationMessage :: SetNodePosition { node_id, position } => {
@@ -715,7 +716,7 @@ fn import_usvg_node(modify_inputs: &mut ModifyInputsContext, node: &usvg::Node,
715
716
modify_inputs. layer_node = Some ( layer) ;
716
717
match node {
717
718
usvg:: Node :: Group ( group) => {
718
- for child in & group. children {
719
+ for child in group. children ( ) {
719
720
import_usvg_node ( modify_inputs, child, transform, NodeId ( generate_uuid ( ) ) , LayerNodeIdentifier :: new_unchecked ( layer) , -1 ) ;
720
721
}
721
722
modify_inputs. layer_node = Some ( layer) ;
@@ -736,71 +737,74 @@ fn import_usvg_node(modify_inputs: &mut ModifyInputsContext, node: &usvg::Node,
736
737
let bounds_transform = DAffine2 :: from_scale_angle_translation ( bounds[ 1 ] - bounds[ 0 ] , 0. , bounds[ 0 ] ) ;
737
738
let transformed_bound_transform = DAffine2 :: from_scale_angle_translation ( transformed_bounds[ 1 ] - transformed_bounds[ 0 ] , 0. , transformed_bounds[ 0 ] ) ;
738
739
apply_usvg_fill (
739
- & path. fill ,
740
+ path. fill ( ) ,
740
741
modify_inputs,
741
742
transform * usvg_transform ( node. abs_transform ( ) ) ,
742
743
bounds_transform,
743
744
transformed_bound_transform,
744
745
) ;
745
- apply_usvg_stroke ( & path. stroke , modify_inputs) ;
746
+ apply_usvg_stroke ( path. stroke ( ) , modify_inputs) ;
746
747
}
747
748
usvg:: Node :: Image ( _image) => {
748
749
warn ! ( "Skip image" )
749
750
}
750
751
usvg:: Node :: Text ( text) => {
751
752
let font = Font :: new ( graphene_core:: consts:: DEFAULT_FONT_FAMILY . to_string ( ) , graphene_core:: consts:: DEFAULT_FONT_STYLE . to_string ( ) ) ;
752
- modify_inputs. insert_text ( text. chunks . iter ( ) . map ( |chunk| chunk. text . clone ( ) ) . collect ( ) , font, 24. , layer) ;
753
+ modify_inputs. insert_text ( text. chunks ( ) . iter ( ) . map ( |chunk| chunk. text ( ) . clone ( ) ) . collect ( ) , font, 24. , layer) ;
753
754
modify_inputs. fill_set ( Fill :: Solid ( Color :: BLACK ) ) ;
754
755
}
755
756
}
756
757
}
757
758
758
- fn apply_usvg_stroke ( stroke : & Option < usvg:: Stroke > , modify_inputs : & mut ModifyInputsContext ) {
759
+ fn apply_usvg_stroke ( stroke : Option < & usvg:: Stroke > , modify_inputs : & mut ModifyInputsContext ) {
759
760
if let Some ( stroke) = stroke {
760
- if let usvg:: Paint :: Color ( color) = & stroke. paint {
761
+ if let usvg:: Paint :: Color ( color) = & stroke. paint ( ) {
761
762
modify_inputs. stroke_set ( Stroke {
762
- color : Some ( usvg_color ( * color, stroke. opacity . get ( ) ) ) ,
763
- weight : stroke. width . get ( ) as f64 ,
764
- dash_lengths : stroke. dasharray . as_ref ( ) . map ( |lengths| lengths. iter ( ) . map ( |& length| length as f64 ) . collect ( ) ) . unwrap_or_default ( ) ,
765
- dash_offset : stroke. dashoffset as f64 ,
766
- line_cap : match stroke. linecap {
763
+ color : Some ( usvg_color ( * color, stroke. opacity ( ) . get ( ) ) ) ,
764
+ weight : stroke. width ( ) . get ( ) as f64 ,
765
+ dash_lengths : stroke. dasharray ( ) . as_ref ( ) . map ( |lengths| lengths. iter ( ) . map ( |& length| length as f64 ) . collect ( ) ) . unwrap_or_default ( ) ,
766
+ dash_offset : stroke. dashoffset ( ) as f64 ,
767
+ line_cap : match stroke. linecap ( ) {
767
768
usvg:: LineCap :: Butt => LineCap :: Butt ,
768
769
usvg:: LineCap :: Round => LineCap :: Round ,
769
770
usvg:: LineCap :: Square => LineCap :: Square ,
770
771
} ,
771
- line_join : match stroke. linejoin {
772
+ line_join : match stroke. linejoin ( ) {
772
773
usvg:: LineJoin :: Miter => LineJoin :: Miter ,
773
774
usvg:: LineJoin :: MiterClip => LineJoin :: Miter ,
774
775
usvg:: LineJoin :: Round => LineJoin :: Round ,
775
776
usvg:: LineJoin :: Bevel => LineJoin :: Bevel ,
776
777
} ,
777
- line_join_miter_limit : stroke. miterlimit . get ( ) as f64 ,
778
+ line_join_miter_limit : stroke. miterlimit ( ) . get ( ) as f64 ,
778
779
} )
779
780
} else {
780
781
warn ! ( "Skip non-solid stroke" )
781
782
}
782
783
}
783
784
}
784
785
785
- fn apply_usvg_fill ( fill : & Option < usvg:: Fill > , modify_inputs : & mut ModifyInputsContext , transform : DAffine2 , bounds_transform : DAffine2 , transformed_bound_transform : DAffine2 ) {
786
+ fn apply_usvg_fill ( fill : Option < & usvg:: Fill > , modify_inputs : & mut ModifyInputsContext , transform : DAffine2 , bounds_transform : DAffine2 , transformed_bound_transform : DAffine2 ) {
786
787
if let Some ( fill) = & fill {
787
- modify_inputs. fill_set ( match & fill. paint {
788
- usvg:: Paint :: Color ( color) => Fill :: solid ( usvg_color ( * color, fill. opacity . get ( ) ) ) ,
788
+ modify_inputs. fill_set ( match & fill. paint ( ) {
789
+ usvg:: Paint :: Color ( color) => Fill :: solid ( usvg_color ( * color, fill. opacity ( ) . get ( ) ) ) ,
789
790
usvg:: Paint :: LinearGradient ( linear) => {
790
- let local = [ DVec2 :: new ( linear. x1 as f64 , linear. y1 as f64 ) , DVec2 :: new ( linear. x2 as f64 , linear. y2 as f64 ) ] ;
791
+ let local = [ DVec2 :: new ( linear. x1 ( ) as f64 , linear. y1 ( ) as f64 ) , DVec2 :: new ( linear. x2 ( ) as f64 , linear. y2 ( ) as f64 ) ] ;
791
792
792
- let to_doc_transform = if linear. base . units == usvg:: Units :: UserSpaceOnUse {
793
+ // TODO: fix this
794
+ /*
795
+ let to_doc_transform = if linear.base.units() == usvg::Units::UserSpaceOnUse {
793
796
transform
794
797
} else {
795
798
transformed_bound_transform
796
- } ;
797
- let to_doc = to_doc_transform * usvg_transform ( linear. transform ) ;
799
+ };*/
800
+ let to_doc_transform = transform;
801
+ let to_doc = to_doc_transform * usvg_transform ( linear. transform ( ) ) ;
798
802
799
803
let document = [ to_doc. transform_point2 ( local[ 0 ] ) , to_doc. transform_point2 ( local[ 1 ] ) ] ;
800
804
let layer = [ transform. inverse ( ) . transform_point2 ( document[ 0 ] ) , transform. inverse ( ) . transform_point2 ( document[ 1 ] ) ] ;
801
805
802
806
let [ start, end] = [ bounds_transform. inverse ( ) . transform_point2 ( layer[ 0 ] ) , bounds_transform. inverse ( ) . transform_point2 ( layer[ 1 ] ) ] ;
803
- let stops = linear. stops . iter ( ) . map ( |stop| ( stop. offset . get ( ) as f64 , usvg_color ( stop. color , stop. opacity . get ( ) ) ) ) . collect ( ) ;
807
+ let stops = linear. stops ( ) . iter ( ) . map ( |stop| ( stop. offset ( ) . get ( ) as f64 , usvg_color ( stop. color ( ) , stop. opacity ( ) . get ( ) ) ) ) . collect ( ) ;
804
808
let stops = GradientStops ( stops) ;
805
809
806
810
Fill :: Gradient ( Gradient {
@@ -812,20 +816,23 @@ fn apply_usvg_fill(fill: &Option<usvg::Fill>, modify_inputs: &mut ModifyInputsCo
812
816
} )
813
817
}
814
818
usvg:: Paint :: RadialGradient ( radial) => {
815
- let local = [ DVec2 :: new ( radial. cx as f64 , radial. cy as f64 ) , DVec2 :: new ( radial. fx as f64 , radial. fy as f64 ) ] ;
819
+ let local = [ DVec2 :: new ( radial. cx ( ) as f64 , radial. cy ( ) as f64 ) , DVec2 :: new ( radial. fx ( ) as f64 , radial. fy ( ) as f64 ) ] ;
816
820
821
+ // TODO: fix this
822
+ /*
817
823
let to_doc_transform = if radial.base.units == usvg::Units::UserSpaceOnUse {
818
824
transform
819
825
} else {
820
826
transformed_bound_transform
821
- } ;
822
- let to_doc = to_doc_transform * usvg_transform ( radial. transform ) ;
827
+ };*/
828
+ let to_doc_transform = transform;
829
+ let to_doc = to_doc_transform * usvg_transform ( radial. transform ( ) ) ;
823
830
824
831
let document = [ to_doc. transform_point2 ( local[ 0 ] ) , to_doc. transform_point2 ( local[ 1 ] ) ] ;
825
832
let layer = [ transform. inverse ( ) . transform_point2 ( document[ 0 ] ) , transform. inverse ( ) . transform_point2 ( document[ 1 ] ) ] ;
826
833
827
834
let [ start, end] = [ bounds_transform. inverse ( ) . transform_point2 ( layer[ 0 ] ) , bounds_transform. inverse ( ) . transform_point2 ( layer[ 1 ] ) ] ;
828
- let stops = radial. stops . iter ( ) . map ( |stop| ( stop. offset . get ( ) as f64 , usvg_color ( stop. color , stop. opacity . get ( ) ) ) ) . collect ( ) ;
835
+ let stops = radial. stops ( ) . iter ( ) . map ( |stop| ( stop. offset ( ) . get ( ) as f64 , usvg_color ( stop. color ( ) , stop. opacity ( ) . get ( ) ) ) ) . collect ( ) ;
829
836
let stops = GradientStops ( stops) ;
830
837
831
838
Fill :: Gradient ( Gradient {
0 commit comments