Clone in a terminal:
Commit c85ed33
Johan Mattsson - 2016-07-17T14:54:05+00:00
c85ed3307df2cd9b30b155d3aecff231c047daadjohan.mattsson.m@gmail.com

Move gradient

Changed files (4)

Diff

diff --git a/libbirdfont/TextRendering/fontconfig.c b/libbirdfont/TextRendering/fontconfig.cindex b70f164..cc06875 100644--- a/libbirdfont/TextRendering/fontconfig.c+++ b/libbirdfont/TextRendering/fontconfig.c@@ -118,7 +118,7 @@ gchar* find_font_file (FcConfig* font_config, const gchar* font_name) { 	FcPatternAddBool (search_pattern, FC_SCALABLE, FcTrue); 	FcPatternAddInteger (search_pattern, FC_WEIGHT, FC_WEIGHT_MEDIUM); 	FcPatternAddInteger (search_pattern, FC_SLANT, FC_SLANT_ROMAN);-		+	 	font_properties = FcObjectSetBuild (FC_FILE, NULL); 	fonts = FcFontList (font_config, search_pattern, font_properties); 	diff --git a/libsvgbird/Gradient.vala b/libsvgbird/Gradient.valaindex 3f2b960..0367067 100644--- a/libsvgbird/Gradient.vala+++ b/libsvgbird/Gradient.vala@@ -23,6 +23,7 @@ public abstract class Gradient : GLib.Object { 	public string id = ""; 	public string? href = null; 	public SvgTransforms transforms;+	public Matrix parent_matrix = Matrix.identity (); 	public Matrix view_matrix = Matrix.identity ();  	public Gradient () {@@ -36,6 +37,21 @@ public abstract class Gradient : GLib.Object { 		} 	} +	public void move (double dx, double dy) {+		double x = dx;+		double y = dy;++		Matrix parent = parent_matrix;+		parent.invert ();+		parent.transform_distance (ref x, ref y);+		+		Matrix m = Matrix.identity ();+		m.translate (-x, -y);+		+		transforms.transforms.insert (0, new SvgTransform.for_matrix (m));+		transforms.collapse_transforms ();			+	}+ 	public Matrix get_matrix () { 		return transforms.get_matrix (); 	}diff --git a/libsvgbird/Object.vala b/libsvgbird/Object.valaindex 2f0ed23..fa1d538 100644--- a/libsvgbird/Object.vala+++ b/libsvgbird/Object.vala@@ -118,12 +118,26 @@ public abstract class Object : GLib.Object { 	public abstract bool is_empty (); 	 	public virtual void move (double dx, double dy) {+		Gradient g;+ 		left += dx; 		right += dx; 		top += dy; 		bottom += dy;++		if (style.fill_gradient != null) {+			g = (!) style.fill_gradient;+			g.move (dx, dy);+		}+		+		if (style.stroke_gradient != null) {+			g = (!) style.stroke_gradient;+			g.move (dx, dy);+		}+ 		to_object_distance (ref dx, ref dy); 		transforms.translate (dx, dy);+		 		update_view_matrix (); 	} 	@@ -234,6 +248,7 @@ public abstract class Object : GLib.Object { 			 			pattern.set_matrix (gradient_matrix); 			+			g.parent_matrix = view_matrix; 			g.view_matrix = gradient_matrix; 			 			foreach (Stop s in g.stops) {@@ -259,7 +274,15 @@ public abstract class Object : GLib.Object { 		bool has_stroke = style.has_stroke ();  		apply_transform (context);-+		+		if (style.fill_gradient != null) {+			apply_gradient (context, (!) style.fill_gradient);+		}+		+		if (style.stroke_gradient != null) {+			apply_gradient (context, (!) style.stroke_gradient);+		}+		 		if (has_stroke) { 			context.set_line_width (style.stroke_width); 		} else {@@ -298,9 +321,9 @@ public abstract class Object : GLib.Object { 	public virtual bool update_boundaries_for_object () { 		ImageSurface surface = new Cairo.ImageSurface (Cairo.Format.ARGB32, 1, 1); 		Context context = new Cairo.Context (surface);+		context.set_matrix (parent_matrix); 		return update_boundaries (context); 	}- }  }diff --git a/libsvgbird/text_drawing.c b/libsvgbird/text_drawing.cindex ea2f9ab..c2fbbb9 100644--- a/libsvgbird/text_drawing.c+++ b/libsvgbird/text_drawing.c@@ -233,6 +233,8 @@ gchar* svg_bird_find_font_file (const gchar* font_name) {  	// match any font as fallback 	search_pattern = FcPatternCreate ();+	FcPatternAddInteger (search_pattern, FC_SLANT, FC_SLANT_ROMAN);+	 	font_properties = FcObjectSetBuild (FC_FILE, NULL);  	fonts = FcFontList (font_config, search_pattern, font_properties);@@ -255,6 +257,10 @@ gchar* svg_bird_find_font_file (const gchar* font_name) { 	// search for a family name 	search_pattern = FcPatternCreate (); 	FcPatternAddString (search_pattern, FC_FAMILY, name);+	FcPatternAddInteger (search_pattern, FC_SLANT, FC_SLANT_ROMAN);+	FcPatternAddBool (search_pattern, FC_SCALABLE, FcTrue);+	FcPatternAddInteger (search_pattern, FC_WEIGHT, FC_WEIGHT_MEDIUM);+ 	fonts = FcFontList (font_config, search_pattern, font_properties); 	 	if (fonts->nfont > 0) {

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112