You can subscribe to this list here.
2006 
_{Jan}

_{Feb}

_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}
(4) 
_{Sep}
(16) 
_{Oct}
(29) 
_{Nov}
(5) 
_{Dec}
(9) 

2007 
_{Jan}
(24) 
_{Feb}
(58) 
_{Mar}
(48) 
_{Apr}
(33) 
_{May}
(11) 
_{Jun}
(10) 
_{Jul}
(10) 
_{Aug}
(17) 
_{Sep}
(3) 
_{Oct}
(107) 
_{Nov}
(40) 
_{Dec}
(2) 
2008 
_{Jan}

_{Feb}
(15) 
_{Mar}
(37) 
_{Apr}
(11) 
_{May}
(50) 
_{Jun}
(44) 
_{Jul}
(13) 
_{Aug}
(2) 
_{Sep}
(6) 
_{Oct}
(1) 
_{Nov}
(11) 
_{Dec}
(12) 
2009 
_{Jan}

_{Feb}
(3) 
_{Mar}
(11) 
_{Apr}
(5) 
_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}

2010 
_{Jan}

_{Feb}

_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}
(1) 
_{Oct}

_{Nov}

_{Dec}

2011 
_{Jan}

_{Feb}

_{Mar}
(1) 
_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}

S  M  T  W  T  F  S 





1
(3) 
2
(6) 
3
(3) 
4
(3) 
5
(1) 
6

7
(1) 
8
(3) 
9

10

11

12
(1) 
13

14
(5) 
15

16

17

18

19
(3) 
20
(9) 
21

22

23
(2) 
24

25

26

27

28

29

30


From: Damon Chaplin <damon@ka...>  20071104 13:02:01

On Sun, 20071104 at 13:46 +0100, Murray Cumming wrote: > On Sun, 20071104 at 12:30 +0000, Damon Chaplin wrote: > > On Sat, 20071103 at 16:33 +0100, Murray Cumming wrote: > > > > > However, I admit that I still see no way to implement a getter for this, > > > unless we store the values separately. This is the implementation of the > > > setter: > > > > > > void > > > goo_canvas_item_set_simple_transform (GooCanvasItem *item, > > > gdouble x, > > > gdouble y, > > > gdouble scale, > > > gdouble rotation) > > > { > > > GooCanvasItemIface *iface = GOO_CANVAS_ITEM_GET_IFACE (item); > > > cairo_matrix_t new_matrix = { 1, 0, 0, 1, 0, 0 }; > > > > > > cairo_matrix_translate (&new_matrix, x, y); > > > cairo_matrix_scale (&new_matrix, scale, scale); > > > cairo_matrix_rotate (&new_matrix, rotation * (M_PI / 180)); > > > iface>set_transform (item, &new_matrix); > > > } > > > > > > You can use the code from _goo_canvas_item_animate_internal(), which has > > to figure out x_start, y_start, scale_start and radians_start from a > > transformation matrix: > > > > cairo_matrix_t tmp_matrix = anim>start; > > double x1 = 1.0, y1 = 0.0; > > > > anim>x_start = tmp_matrix.x0; > > anim>y_start = tmp_matrix.y0; > > > > tmp_matrix.x0 = 0.0; > > tmp_matrix.y0 = 0.0; > > > > cairo_matrix_transform_point (&tmp_matrix, &x1, &y1); > > anim>scale_start = sqrt (x1 * x1 + y1 * y1); > > anim>radians_start = atan2 (y1, x1); > > > > That seems to work OK, though it only works for simple transformations  > > no skews or separate x & y scales. > > I'm not very happy about providing a function that will return incorrect > information if, for instance, a skew was used. It the function is called goo_canvas_item_get_simple_transform() and is the opposite of goo_canvas_item_set_simple_transform() I think it is OK. I don't think you can do much better with transformations, as they can result from a series of operations (or could just be arbitrary values) and you can't unscramble them. Damon 
From: Murray Cumming <murrayc@mu...>  20071104 12:46:51

On Sun, 20071104 at 12:30 +0000, Damon Chaplin wrote: > On Sat, 20071103 at 16:33 +0100, Murray Cumming wrote: > > > However, I admit that I still see no way to implement a getter for this, > > unless we store the values separately. This is the implementation of the > > setter: > > > > void > > goo_canvas_item_set_simple_transform (GooCanvasItem *item, > > gdouble x, > > gdouble y, > > gdouble scale, > > gdouble rotation) > > { > > GooCanvasItemIface *iface = GOO_CANVAS_ITEM_GET_IFACE (item); > > cairo_matrix_t new_matrix = { 1, 0, 0, 1, 0, 0 }; > > > > cairo_matrix_translate (&new_matrix, x, y); > > cairo_matrix_scale (&new_matrix, scale, scale); > > cairo_matrix_rotate (&new_matrix, rotation * (M_PI / 180)); > > iface>set_transform (item, &new_matrix); > > } > > > You can use the code from _goo_canvas_item_animate_internal(), which has > to figure out x_start, y_start, scale_start and radians_start from a > transformation matrix: > > cairo_matrix_t tmp_matrix = anim>start; > double x1 = 1.0, y1 = 0.0; > > anim>x_start = tmp_matrix.x0; > anim>y_start = tmp_matrix.y0; > > tmp_matrix.x0 = 0.0; > tmp_matrix.y0 = 0.0; > > cairo_matrix_transform_point (&tmp_matrix, &x1, &y1); > anim>scale_start = sqrt (x1 * x1 + y1 * y1); > anim>radians_start = atan2 (y1, x1); > > That seems to work OK, though it only works for simple transformations  > no skews or separate x & y scales. I'm not very happy about providing a function that will return incorrect information if, for instance, a skew was used.  murrayc@... http://www.murrayc.com http://www.openismus.com 
From: Damon Chaplin <damon@ka...>  20071104 12:31:10

On Sat, 20071103 at 16:33 +0100, Murray Cumming wrote: > However, I admit that I still see no way to implement a getter for this, > unless we store the values separately. This is the implementation of the > setter: > > void > goo_canvas_item_set_simple_transform (GooCanvasItem *item, > gdouble x, > gdouble y, > gdouble scale, > gdouble rotation) > { > GooCanvasItemIface *iface = GOO_CANVAS_ITEM_GET_IFACE (item); > cairo_matrix_t new_matrix = { 1, 0, 0, 1, 0, 0 }; > > cairo_matrix_translate (&new_matrix, x, y); > cairo_matrix_scale (&new_matrix, scale, scale); > cairo_matrix_rotate (&new_matrix, rotation * (M_PI / 180)); > iface>set_transform (item, &new_matrix); > } You can use the code from _goo_canvas_item_animate_internal(), which has to figure out x_start, y_start, scale_start and radians_start from a transformation matrix: cairo_matrix_t tmp_matrix = anim>start; double x1 = 1.0, y1 = 0.0; anim>x_start = tmp_matrix.x0; anim>y_start = tmp_matrix.y0; tmp_matrix.x0 = 0.0; tmp_matrix.y0 = 0.0; cairo_matrix_transform_point (&tmp_matrix, &x1, &y1); anim>scale_start = sqrt (x1 * x1 + y1 * y1); anim>radians_start = atan2 (y1, x1); That seems to work OK, though it only works for simple transformations  no skews or separate x & y scales. Damon 