Clone in a terminal:
Commit 1fe76c1
Johan Mattsson - 2012-09-07T23:14:13+00:00
1fe76c1dfb549b219559aeec41da8cf7bf4ed063johan.mattsson.m@gmail.com

handles for background tools

Changed files (1)

Diff

diff --git a/src/GlyphBackgroundImage.vala b/src/GlyphBackgroundImage.valaindex 562fc09..ebef641 100644--- a/src/GlyphBackgroundImage.vala+++ b/src/GlyphBackgroundImage.vala@@ -28,9 +28,8 @@ class GlyphBackgroundImage { 	public double img_scale_x = 1; 	public double img_scale_y = 1; 	public double img_rotation = 0;-	-	public double img_pos_x = 1000;-	public double img_pos_y = 1000;+	public int width_margin = 0;+ 	 	public int active_handle = -1; 	public int selected_handle = -1;@@ -229,16 +228,16 @@ class GlyphBackgroundImage { 		} 		 		// add margin-		int sq = (int) (Math.sqrt (Math.pow (get_img ().get_height (), 2) + Math.pow (get_img ().get_width (), 2)) + 0.5);+		width_margin = (int) (Math.sqrt (Math.pow (get_img ().get_height (), 2) + Math.pow (get_img ().get_width (), 2)) + 0.5); -		sg = new Surface.similar (get_img (), get_img ().get_content (), sq, sq);+		sg = new Surface.similar (get_img (), get_img ().get_content (), width_margin, width_margin); 		cg = new Context (sg); 		-		int wc = (int) ((sq - get_img ().get_width ()) / 2);-		int hc = (int) ((sq - get_img ().get_height ()) / 2);+		int wc = (int) ((width_margin - get_img ().get_width ()) / 2);+		int hc = (int) ((width_margin - get_img ().get_height ()) / 2);  		cg.set_source_rgba (0, 0.5, 0, 1);-		cg.rectangle (0, 0, sq, sq);+		cg.rectangle (0, 0, width_margin, width_margin); 		cg.fill (); 		 		cg.set_source_surface (get_img (), wc, hc);@@ -255,8 +254,8 @@ class GlyphBackgroundImage { 		w = (int) iw; 		h = (int) ih; -		oy = sq;-		ox = sq;+		oy = width_margin;+		ox = width_margin;  		// rotate image 		s = new Surface.similar (sg, sg.get_content (), (int) (ox), (int) (oy));@@ -264,9 +263,9 @@ class GlyphBackgroundImage { 	 		c.save (); 	-   		c.translate (sq * 0.5, sq * 0.5);+   		c.translate (width_margin * 0.5, width_margin * 0.5); 		c.rotate (img_rotation);-		c.translate (-sq * 0.5, -sq * 0.5);+		c.translate (-width_margin * 0.5, -width_margin * 0.5);  		c.set_source_surface (cg.get_target (), 0, 0); 		c.paint ();	@@ -277,8 +276,8 @@ class GlyphBackgroundImage { 		ct = new Context (st); 		ct.save (); -		double xmip = img_offset_x - Glyph.path_coordinate_x (sq / 2.0) + view_offset_x;-		double ymip = img_offset_y - Glyph.path_coordinate_y (sq / 2.0) - view_offset_y;+		double xmip = img_offset_x - Glyph.path_coordinate_x (width_margin / 2.0) + view_offset_x;+		double ymip = img_offset_y - Glyph.path_coordinate_y (width_margin / 2.0) - view_offset_y;  		// scale 		scale_x = view_zoom * img_scale_x;@@ -318,20 +317,11 @@ class GlyphBackgroundImage { 		double a, b; 		Glyph g = MainWindow.get_current_glyph (); 		-		x = img_offset_x - g.view_offset_x + g.allocation.width  / 2.0;-		y = img_offset_y - g.view_offset_y + g.allocation.height / 2.0;-		+		x = img_offset_x - g.view_offset_x + (width_margin / 2) * img_scale_x;+		y = img_offset_y - g.view_offset_y + (width_margin / 2) * img_scale_y;+ 		y *= g.view_zoom; 		x *= g.view_zoom;-		-		a = get_img ().get_width () / 2.0 * img_scale_x;-		b = get_img ().get_height () / 2.0 * img_scale_y;--		a *= g.view_zoom;-		b *= g.view_zoom;-		-		x += a;-		y += b; 	}  	bool is_over_rotate (double nx, double ny) {@@ -353,19 +343,10 @@ class GlyphBackgroundImage { 		bool inx, iny;  		size = 12 * g.view_zoom;-		-		x = img_offset_x - g.view_offset_x;-		y = img_offset_y - g.view_offset_y + get_img ().get_height () * img_scale_y; -		cx = g.allocation.width / 2.0;-		cy = g.allocation.height / 2.0;-		-		w = 0;-		h = get_img ().get_height () * img_scale_y;-		-		x = img_offset_x + w - g.view_offset_x + g.allocation.width  / 2.0;-		y = img_offset_y + h - g.view_offset_y + g.allocation.height / 2.0;-		+		x = img_offset_x - g.view_offset_x;+		y = img_offset_y - g.view_offset_y + (width_margin) * img_scale_y;+				 		y *= g.view_zoom; 		x *= g.view_zoom; 				@@ -395,63 +376,55 @@ class GlyphBackgroundImage { 		draw_resize_handle (cr, g); 		draw_rotate_handle (cr, g); 	}-	-	public void draw_rotate_handle (Context cr, Glyph g) {-		double x, y, a, b, hx, hy, x1, y1, x2, y2;-		-		double ivz = 1.0 / (g.view_zoom);-		-		cr.save (); -		if (selected_handle == 2) cr.set_source_rgba (1, 0, 0.3, 1);-		else if (active_handle == 2) cr.set_source_rgba (0, 0, 0.3, 1);-		else cr.set_source_rgba (0.7, 0.7, 0.8, 1);+	public void draw_resize_handle (Context cr, Glyph g) {+		double x, y;+		cr.save (); 		-		cr.set_line_width (ivz);--		a = get_img ().get_width () / 2.0 * img_scale_x;-		b = get_img ().get_height () / 2.0 * img_scale_y;- 		cr.scale (g.view_zoom, g.view_zoom);+		cr.set_source_rgba (1, 0, 0.3, 1);++		x = img_offset_x - g.view_offset_x;+		y = img_offset_y - g.view_offset_y + (width_margin) * img_scale_y; 		-		x = img_offset_x + a - g.view_offset_x + g.allocation.width  / 2.0;-		y = img_offset_y + b - g.view_offset_y + g.allocation.height / 2.0;+		draw_handle_triangle (x - 1, y - 1, cr, g, 6);+										+		cr.restore ();+	} 		-		hx = cos (img_rotation) * 75;-		hy = sin (img_rotation) * 75;+	public void draw_rotate_handle (Context cr, Glyph g) {+		double x, y, hx, hy, x1, y1, x2, y2; 		-		x1 = x + 2.5 * ivz;-		y1 = y + 2.5 * ivz;+		double ivz = 1.0 / (g.view_zoom); 		-		x2 = x + 2.5 * ivz + hx * ivz;-		y2 = y + 2.5 * ivz + hy * ivz;+		cr.save (); 		-		cr.move_to (x1, y1);-		cr.line_to (x2, y2);-		cr.stroke ();+		cr.scale (g.view_zoom, g.view_zoom); 		-		cr.rectangle (x, y, 5 * ivz, 5 * ivz);-		cr.rectangle (x2 - 5 * ivz, y2 - 5 * ivz, 10 * ivz, 10 * ivz); // Fixa: do arc instead+		if (selected_handle == 2) cr.set_source_rgba (1, 0, 0.3, 1);+		else if (active_handle == 2) cr.set_source_rgba (0, 0, 0.3, 1);+		else cr.set_source_rgba (0.7, 0.7, 0.8, 1); +		x = img_offset_x - g.view_offset_x + (width_margin / 2) * img_scale_x;+		y = img_offset_y - g.view_offset_y + (width_margin / 2) * img_scale_y;+				+		cr.rectangle (x, y, 5 * ivz, 5 * ivz); 		cr.fill (); -		cr.restore ();-	}-	-	public void draw_resize_handle (Context cr, Glyph g) {-		double x, y;+		hx = cos (img_rotation) * 75 * ivz;+		hy = sin (img_rotation) * 75 * ivz; 		-		double w = 0;-		double h = get_img ().get_height () * img_scale_y;+		x2 = x + hx;+		y2 = y + hy; -		cr.save ();-		-		cr.scale (g.view_zoom, g.view_zoom);-		-		x = img_offset_x + w - g.view_offset_x + g.allocation.width  / 2.0;-		y = img_offset_y + h - g.view_offset_y + g.allocation.height / 2.0;-		-		draw_handle_triangle (x - 1, y - 1, cr, g, 6);+		cr.rectangle (x2, y2, 5 * ivz, 5 * ivz);+		cr.fill ();++		cr.set_line_width (ivz);+		cr.move_to (x + 2.5* ivz, y + 2.5* ivz);+		cr.line_to (x2 + 2.5* ivz, y2 + 2.5* ivz);+		cr.stroke ();+										 		cr.restore (); 	} 

Contact

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