From: l.f.hwang <l.f...@gm...> - 2011-08-03 03:36:57
Attachments:
plplot_5.9.6_p1.diff
|
hi guys, I had write a patch to support drawing eclipse rotated in 5.9.6, pls check attachment enclosed. -- l.f.hwang 2011-08-03 _________________________________________________________ |
From: Andrew R. <and...@us...> - 2011-08-03 09:26:35
|
Thank you for your patch. This functionality is already implemented in the current version of plplot (5.9.8), although the documentation has not been properly updated. I will fix this in the subversion repository. Regards Andrew On Wed, Aug 03, 2011 at 11:36:51AM +0800, l.f.hwang wrote: > hi guys, > > I had write a patch to support drawing eclipse rotated in 5.9.6, pls > check attachment enclosed. > > > -- > l.f.hwang > 2011-08-03 > _________________________________________________________ > > > diff -cr plplot-5.9.6/bindings/c++/plstream.cc plplot-5.9.6_p1/bindings/c++/plstream.cc > *** plplot-5.9.6/bindings/c++/plstream.cc 2010-06-06 00:11:39.000000000 +0800 > --- plplot-5.9.6_p1/bindings/c++/plstream.cc 2010-09-24 09:53:24.056339651 +0800 > *************** > *** 328,333 **** > --- 328,343 ---- > plarc( x, y, a, b, angle1, angle2, fill ); > } > > + > + void > + plstream::arcr( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, > + PLBOOL fill ) > + { > + set_stream(); > + > + plarcr( x, y, a, b, angle1, angle2, rotate, fill ); > + } > + > void > plstream::arrows( PLFLT * u, PLFLT * v, PLFLT * x, PLFLT * y, PLINT n, > PLFLT scale, PLFLT dx, PLFLT dy ) > diff -cr plplot-5.9.6/bindings/c++/plstream.h plplot-5.9.6_p1/bindings/c++/plstream.h > *** plplot-5.9.6/bindings/c++/plstream.h 2010-06-06 00:11:39.000000000 +0800 > --- plplot-5.9.6_p1/bindings/c++/plstream.h 2010-09-24 09:53:25.856319962 +0800 > *************** > *** 123,128 **** > --- 123,134 ---- > > void arc( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, > PLBOOL fill ); > + > + // Plot an rotate arc > + > + void arcr( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, > + PLBOOL fill ); > + > > // Simple arrow plotter > void arrows( PLFLT *u, PLFLT *v, PLFLT *x, PLFLT *y, PLINT n, > diff -cr plplot-5.9.6/include/plplot.h plplot-5.9.6_p1/include/plplot.h > *** plplot-5.9.6/include/plplot.h 2010-06-06 00:11:39.000000000 +0800 > --- plplot-5.9.6_p1/include/plplot.h 2010-09-24 09:37:53.036314838 +0800 > *************** > *** 623,628 **** > --- 623,629 ---- > #define pl_setcontlabelparam c_pl_setcontlabelparam > #define pladv c_pladv > #define plarc c_plarc > + #define plarcr c_plarcr > #define plaxes c_plaxes > #define plbin c_plbin > #define plbop c_plbop > *************** > *** 839,845 **** > --- 840,852 ---- > PLDLLIMPEXP void > c_plarc( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, > PLBOOL fill ); > + > + /* Plot an rotated arc */ > > + PLDLLIMPEXP void > + c_plarcr( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, > + PLBOOL fill ); > + > /* This functions similarly to plbox() except that the origin of the axes */ > /* is placed at the user-specified point (x0, y0). */ > > diff -cr plplot-5.9.6/src/plarc.c plplot-5.9.6_p1/src/plarc.c > *** plplot-5.9.6/src/plarc.c 2010-06-06 00:11:39.000000000 +0800 > --- plplot-5.9.6_p1/src/plarc.c 2010-11-02 13:01:16.260160438 +0800 > *************** > *** 141,143 **** > --- 141,242 ---- > } > } > > + > + /*------------------------------------------------------------------------- > + * c_plarcr : Plot an arc with rotate supportd. > + * > + * Takes the following arguments: > + * > + * x, y: > + * x and y coordinates for the center of the arc > + * > + * a, b: > + * Radius of the arc's major and minor axes > + * > + * angle1: > + * Start angle (degrees) > + * > + * angle2: > + * End angle (degrees) > + * > + * rotate: > + * rotate angle ( degrees ) > + * > + * fill: > + * Should the arc be filled? > + * > + *-------------------------------------------------------------------------*/ > + > + void > + plarcr_approx( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, PLBOOL fill ) > + { > + > + PLINT i; > + PLFLT theta0, theta_step, theta, d_angle; > + > + /* rotatd angle */ > + PLFLT alpha = DEG_TO_RAD( rotate ); > + > + PLFLT cos_alpha = cos( alpha ); > + PLFLT sin_alpha = sin( alpha ); > + > + PLFLT tmp_x; > + PLFLT tmp_y; > + > + PLINT segments; > + PLFLT xs[CIRCLE_SEGMENTS], ys[CIRCLE_SEGMENTS]; > + > + /* The difference between the start and end angles */ > + d_angle = DEG_TO_RAD( angle2 - angle1 ); > + if ( fabs( d_angle ) > M_PI * 2.0 ) > + d_angle = M_PI * 2.0; > + > + /* The number of line segments used to approximate the arc */ > + segments = d_angle / ( 2.0 * M_PI ) * CIRCLE_SEGMENTS; > + /* Always use at least 2 arc points, otherwise fills will break. */ > + if ( segments < 2 ) > + segments = 2; > + /* The start angle in radians and number of radians in each approximating > + * segment. */ > + theta0 = DEG_TO_RAD( angle1 ); > + > + theta_step = d_angle / ( segments - 1 ); > + > + /* The coordinates for the circle outline */ > + for ( i = 0; i < segments; i++ ) > + { > + theta = theta0 + theta_step * (PLFLT) i; > + > + tmp_x = a * cos( theta ); > + tmp_y = b * sin( theta ); > + > + xs[i] = tmp_x * cos_alpha - tmp_y * sin_alpha + x; > + ys[i] = tmp_y * cos_alpha + tmp_x * sin_alpha + y; > + //xs[i] = a * ( cos( theta ) * cos_alpha - sin( theta ) * sin_alpha ) + x; > + //ys[i] = b * ( cos( theta ) * sin_alpha + sin( theta ) * cos_alpha ) + y; > + } > + > + if ( fill ) > + { > + /* Add the center point if we aren't drawing a circle */ > + if ( fabs( d_angle ) < M_PI * 2.0 ) > + { > + xs[segments - 1] = x; > + ys[segments - 1] = y; > + } > + /* Draw a filled arc */ > + plfill( segments, xs, ys ); > + } > + else > + { > + /* Draw the arc outline */ > + plline( segments, xs, ys ); > + } > + } > + > + void > + c_plarcr( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, PLBOOL fill ) > + { > + plarcr_approx( x, y, a, b, angle1, angle2, rotate, fill ); > + } > + > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > The must-attend event for mobile developers. Connect with experts. > Get tools for creating Super Apps. See the latest technologies. > Sessions, hands-on labs, demos & much more. Register early & save! > http://p.sf.net/sfu/rim-blackberry-1 > _______________________________________________ > Plplot-devel mailing list > Plp...@li... > https://lists.sourceforge.net/lists/listinfo/plplot-devel |
From: Andrew R. <and...@us...> - 2011-08-03 09:29:47
|
Actually, on closer inspection the API to plarc in 5.9.8 supports an argument rotate, but the argument doesn't actually do anything! I'll see if we can get this cleaned up. Thanks for drawing it to our attention. Andrew On Wed, Aug 03, 2011 at 11:36:51AM +0800, l.f.hwang wrote: > hi guys, > > I had write a patch to support drawing eclipse rotated in 5.9.6, pls > check attachment enclosed. > > > -- > l.f.hwang > 2011-08-03 > _________________________________________________________ > > > diff -cr plplot-5.9.6/bindings/c++/plstream.cc plplot-5.9.6_p1/bindings/c++/plstream.cc > *** plplot-5.9.6/bindings/c++/plstream.cc 2010-06-06 00:11:39.000000000 +0800 > --- plplot-5.9.6_p1/bindings/c++/plstream.cc 2010-09-24 09:53:24.056339651 +0800 > *************** > *** 328,333 **** > --- 328,343 ---- > plarc( x, y, a, b, angle1, angle2, fill ); > } > > + > + void > + plstream::arcr( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, > + PLBOOL fill ) > + { > + set_stream(); > + > + plarcr( x, y, a, b, angle1, angle2, rotate, fill ); > + } > + > void > plstream::arrows( PLFLT * u, PLFLT * v, PLFLT * x, PLFLT * y, PLINT n, > PLFLT scale, PLFLT dx, PLFLT dy ) > diff -cr plplot-5.9.6/bindings/c++/plstream.h plplot-5.9.6_p1/bindings/c++/plstream.h > *** plplot-5.9.6/bindings/c++/plstream.h 2010-06-06 00:11:39.000000000 +0800 > --- plplot-5.9.6_p1/bindings/c++/plstream.h 2010-09-24 09:53:25.856319962 +0800 > *************** > *** 123,128 **** > --- 123,134 ---- > > void arc( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, > PLBOOL fill ); > + > + // Plot an rotate arc > + > + void arcr( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, > + PLBOOL fill ); > + > > // Simple arrow plotter > void arrows( PLFLT *u, PLFLT *v, PLFLT *x, PLFLT *y, PLINT n, > diff -cr plplot-5.9.6/include/plplot.h plplot-5.9.6_p1/include/plplot.h > *** plplot-5.9.6/include/plplot.h 2010-06-06 00:11:39.000000000 +0800 > --- plplot-5.9.6_p1/include/plplot.h 2010-09-24 09:37:53.036314838 +0800 > *************** > *** 623,628 **** > --- 623,629 ---- > #define pl_setcontlabelparam c_pl_setcontlabelparam > #define pladv c_pladv > #define plarc c_plarc > + #define plarcr c_plarcr > #define plaxes c_plaxes > #define plbin c_plbin > #define plbop c_plbop > *************** > *** 839,845 **** > --- 840,852 ---- > PLDLLIMPEXP void > c_plarc( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, > PLBOOL fill ); > + > + /* Plot an rotated arc */ > > + PLDLLIMPEXP void > + c_plarcr( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, > + PLBOOL fill ); > + > /* This functions similarly to plbox() except that the origin of the axes */ > /* is placed at the user-specified point (x0, y0). */ > > diff -cr plplot-5.9.6/src/plarc.c plplot-5.9.6_p1/src/plarc.c > *** plplot-5.9.6/src/plarc.c 2010-06-06 00:11:39.000000000 +0800 > --- plplot-5.9.6_p1/src/plarc.c 2010-11-02 13:01:16.260160438 +0800 > *************** > *** 141,143 **** > --- 141,242 ---- > } > } > > + > + /*------------------------------------------------------------------------- > + * c_plarcr : Plot an arc with rotate supportd. > + * > + * Takes the following arguments: > + * > + * x, y: > + * x and y coordinates for the center of the arc > + * > + * a, b: > + * Radius of the arc's major and minor axes > + * > + * angle1: > + * Start angle (degrees) > + * > + * angle2: > + * End angle (degrees) > + * > + * rotate: > + * rotate angle ( degrees ) > + * > + * fill: > + * Should the arc be filled? > + * > + *-------------------------------------------------------------------------*/ > + > + void > + plarcr_approx( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, PLBOOL fill ) > + { > + > + PLINT i; > + PLFLT theta0, theta_step, theta, d_angle; > + > + /* rotatd angle */ > + PLFLT alpha = DEG_TO_RAD( rotate ); > + > + PLFLT cos_alpha = cos( alpha ); > + PLFLT sin_alpha = sin( alpha ); > + > + PLFLT tmp_x; > + PLFLT tmp_y; > + > + PLINT segments; > + PLFLT xs[CIRCLE_SEGMENTS], ys[CIRCLE_SEGMENTS]; > + > + /* The difference between the start and end angles */ > + d_angle = DEG_TO_RAD( angle2 - angle1 ); > + if ( fabs( d_angle ) > M_PI * 2.0 ) > + d_angle = M_PI * 2.0; > + > + /* The number of line segments used to approximate the arc */ > + segments = d_angle / ( 2.0 * M_PI ) * CIRCLE_SEGMENTS; > + /* Always use at least 2 arc points, otherwise fills will break. */ > + if ( segments < 2 ) > + segments = 2; > + /* The start angle in radians and number of radians in each approximating > + * segment. */ > + theta0 = DEG_TO_RAD( angle1 ); > + > + theta_step = d_angle / ( segments - 1 ); > + > + /* The coordinates for the circle outline */ > + for ( i = 0; i < segments; i++ ) > + { > + theta = theta0 + theta_step * (PLFLT) i; > + > + tmp_x = a * cos( theta ); > + tmp_y = b * sin( theta ); > + > + xs[i] = tmp_x * cos_alpha - tmp_y * sin_alpha + x; > + ys[i] = tmp_y * cos_alpha + tmp_x * sin_alpha + y; > + //xs[i] = a * ( cos( theta ) * cos_alpha - sin( theta ) * sin_alpha ) + x; > + //ys[i] = b * ( cos( theta ) * sin_alpha + sin( theta ) * cos_alpha ) + y; > + } > + > + if ( fill ) > + { > + /* Add the center point if we aren't drawing a circle */ > + if ( fabs( d_angle ) < M_PI * 2.0 ) > + { > + xs[segments - 1] = x; > + ys[segments - 1] = y; > + } > + /* Draw a filled arc */ > + plfill( segments, xs, ys ); > + } > + else > + { > + /* Draw the arc outline */ > + plline( segments, xs, ys ); > + } > + } > + > + void > + c_plarcr( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, PLBOOL fill ) > + { > + plarcr_approx( x, y, a, b, angle1, angle2, rotate, fill ); > + } > + > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > The must-attend event for mobile developers. Connect with experts. > Get tools for creating Super Apps. See the latest technologies. > Sessions, hands-on labs, demos & much more. Register early & save! > http://p.sf.net/sfu/rim-blackberry-1 > _______________________________________________ > Plplot-devel mailing list > Plp...@li... > https://lists.sourceforge.net/lists/listinfo/plplot-devel |
From: Andrew R. <and...@us...> - 2011-08-03 12:58:57
|
I've now properly implemented the rotate option in plarc and updated the documentation. I've also modified example 27 to provide a more rigorous test / demonstration of the plarc capabilities. This did throw up a problem with filled arcs. For me the code crashed with a malloc error. Reducing the number of segments by 1 fixed the problem so I think it is either a rounding error, or an off-by-one error in the fill code for dealing with cases where there are > PL_MAXPOLY points in the boundary. My workaround is ok for now, but doesn't address the underlying problem. I'll try and take a look unless anyone else gets there first. Andrew On Wed, Aug 03, 2011 at 10:29:34AM +0100, Andrew Ross wrote: > > Actually, on closer inspection the API to plarc in 5.9.8 supports > an argument rotate, but the argument doesn't actually do anything! > I'll see if we can get this cleaned up. Thanks for drawing it to > our attention. > > Andrew > > On Wed, Aug 03, 2011 at 11:36:51AM +0800, l.f.hwang wrote: > > hi guys, > > > > I had write a patch to support drawing eclipse rotated in 5.9.6, pls > > check attachment enclosed. > > > > > > -- > > l.f.hwang > > 2011-08-03 > > _________________________________________________________ > > > > > > > diff -cr plplot-5.9.6/bindings/c++/plstream.cc plplot-5.9.6_p1/bindings/c++/plstream.cc > > *** plplot-5.9.6/bindings/c++/plstream.cc 2010-06-06 00:11:39.000000000 +0800 > > --- plplot-5.9.6_p1/bindings/c++/plstream.cc 2010-09-24 09:53:24.056339651 +0800 > > *************** > > *** 328,333 **** > > --- 328,343 ---- > > plarc( x, y, a, b, angle1, angle2, fill ); > > } > > > > + > > + void > > + plstream::arcr( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, > > + PLBOOL fill ) > > + { > > + set_stream(); > > + > > + plarcr( x, y, a, b, angle1, angle2, rotate, fill ); > > + } > > + > > void > > plstream::arrows( PLFLT * u, PLFLT * v, PLFLT * x, PLFLT * y, PLINT n, > > PLFLT scale, PLFLT dx, PLFLT dy ) > > diff -cr plplot-5.9.6/bindings/c++/plstream.h plplot-5.9.6_p1/bindings/c++/plstream.h > > *** plplot-5.9.6/bindings/c++/plstream.h 2010-06-06 00:11:39.000000000 +0800 > > --- plplot-5.9.6_p1/bindings/c++/plstream.h 2010-09-24 09:53:25.856319962 +0800 > > *************** > > *** 123,128 **** > > --- 123,134 ---- > > > > void arc( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, > > PLBOOL fill ); > > + > > + // Plot an rotate arc > > + > > + void arcr( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, > > + PLBOOL fill ); > > + > > > > // Simple arrow plotter > > void arrows( PLFLT *u, PLFLT *v, PLFLT *x, PLFLT *y, PLINT n, > > diff -cr plplot-5.9.6/include/plplot.h plplot-5.9.6_p1/include/plplot.h > > *** plplot-5.9.6/include/plplot.h 2010-06-06 00:11:39.000000000 +0800 > > --- plplot-5.9.6_p1/include/plplot.h 2010-09-24 09:37:53.036314838 +0800 > > *************** > > *** 623,628 **** > > --- 623,629 ---- > > #define pl_setcontlabelparam c_pl_setcontlabelparam > > #define pladv c_pladv > > #define plarc c_plarc > > + #define plarcr c_plarcr > > #define plaxes c_plaxes > > #define plbin c_plbin > > #define plbop c_plbop > > *************** > > *** 839,845 **** > > --- 840,852 ---- > > PLDLLIMPEXP void > > c_plarc( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, > > PLBOOL fill ); > > + > > + /* Plot an rotated arc */ > > > > + PLDLLIMPEXP void > > + c_plarcr( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, > > + PLBOOL fill ); > > + > > /* This functions similarly to plbox() except that the origin of the axes */ > > /* is placed at the user-specified point (x0, y0). */ > > > > diff -cr plplot-5.9.6/src/plarc.c plplot-5.9.6_p1/src/plarc.c > > *** plplot-5.9.6/src/plarc.c 2010-06-06 00:11:39.000000000 +0800 > > --- plplot-5.9.6_p1/src/plarc.c 2010-11-02 13:01:16.260160438 +0800 > > *************** > > *** 141,143 **** > > --- 141,242 ---- > > } > > } > > > > + > > + /*------------------------------------------------------------------------- > > + * c_plarcr : Plot an arc with rotate supportd. > > + * > > + * Takes the following arguments: > > + * > > + * x, y: > > + * x and y coordinates for the center of the arc > > + * > > + * a, b: > > + * Radius of the arc's major and minor axes > > + * > > + * angle1: > > + * Start angle (degrees) > > + * > > + * angle2: > > + * End angle (degrees) > > + * > > + * rotate: > > + * rotate angle ( degrees ) > > + * > > + * fill: > > + * Should the arc be filled? > > + * > > + *-------------------------------------------------------------------------*/ > > + > > + void > > + plarcr_approx( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, PLBOOL fill ) > > + { > > + > > + PLINT i; > > + PLFLT theta0, theta_step, theta, d_angle; > > + > > + /* rotatd angle */ > > + PLFLT alpha = DEG_TO_RAD( rotate ); > > + > > + PLFLT cos_alpha = cos( alpha ); > > + PLFLT sin_alpha = sin( alpha ); > > + > > + PLFLT tmp_x; > > + PLFLT tmp_y; > > + > > + PLINT segments; > > + PLFLT xs[CIRCLE_SEGMENTS], ys[CIRCLE_SEGMENTS]; > > + > > + /* The difference between the start and end angles */ > > + d_angle = DEG_TO_RAD( angle2 - angle1 ); > > + if ( fabs( d_angle ) > M_PI * 2.0 ) > > + d_angle = M_PI * 2.0; > > + > > + /* The number of line segments used to approximate the arc */ > > + segments = d_angle / ( 2.0 * M_PI ) * CIRCLE_SEGMENTS; > > + /* Always use at least 2 arc points, otherwise fills will break. */ > > + if ( segments < 2 ) > > + segments = 2; > > + /* The start angle in radians and number of radians in each approximating > > + * segment. */ > > + theta0 = DEG_TO_RAD( angle1 ); > > + > > + theta_step = d_angle / ( segments - 1 ); > > + > > + /* The coordinates for the circle outline */ > > + for ( i = 0; i < segments; i++ ) > > + { > > + theta = theta0 + theta_step * (PLFLT) i; > > + > > + tmp_x = a * cos( theta ); > > + tmp_y = b * sin( theta ); > > + > > + xs[i] = tmp_x * cos_alpha - tmp_y * sin_alpha + x; > > + ys[i] = tmp_y * cos_alpha + tmp_x * sin_alpha + y; > > + //xs[i] = a * ( cos( theta ) * cos_alpha - sin( theta ) * sin_alpha ) + x; > > + //ys[i] = b * ( cos( theta ) * sin_alpha + sin( theta ) * cos_alpha ) + y; > > + } > > + > > + if ( fill ) > > + { > > + /* Add the center point if we aren't drawing a circle */ > > + if ( fabs( d_angle ) < M_PI * 2.0 ) > > + { > > + xs[segments - 1] = x; > > + ys[segments - 1] = y; > > + } > > + /* Draw a filled arc */ > > + plfill( segments, xs, ys ); > > + } > > + else > > + { > > + /* Draw the arc outline */ > > + plline( segments, xs, ys ); > > + } > > + } > > + > > + void > > + c_plarcr( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, PLBOOL fill ) > > + { > > + plarcr_approx( x, y, a, b, angle1, angle2, rotate, fill ); > > + } > > + > > > ------------------------------------------------------------------------------ > > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > > The must-attend event for mobile developers. Connect with experts. > > Get tools for creating Super Apps. See the latest technologies. > > Sessions, hands-on labs, demos & much more. Register early & save! > > http://p.sf.net/sfu/rim-blackberry-1 > > _______________________________________________ > > Plplot-devel mailing list > > Plp...@li... > > https://lists.sourceforge.net/lists/listinfo/plplot-devel > > > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > The must-attend event for mobile developers. Connect with experts. > Get tools for creating Super Apps. See the latest technologies. > Sessions, hands-on labs, demos & much more. Register early & save! > http://p.sf.net/sfu/rim-blackberry-1 > _______________________________________________ > Plplot-devel mailing list > Plp...@li... > https://lists.sourceforge.net/lists/listinfo/plplot-devel > |
From: Alan W. I. <ir...@be...> - 2011-08-03 14:48:48
|
On 2011-08-03 13:57+0100 Andrew Ross wrote: > > I've now properly implemented the rotate option in plarc and updated > the documentation. I've also modified example 27 to provide a more > rigorous test / demonstration of the plarc capabilities. Hi Andrew: That extra page to example 27 sure is a good-looking example of the plarc capability. Do you have any further plans there or it is time to propagate that page to the other languages? Alan __________________________ Alan W. Irwin Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); PLplot scientific plotting software package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |
From: Andrew R. <and...@us...> - 2011-08-04 07:12:07
|
On Wed, Aug 03, 2011 at 07:48:41AM -0700, Alan Irwin wrote: > On 2011-08-03 13:57+0100 Andrew Ross wrote: > >> >> I've now properly implemented the rotate option in plarc and updated >> the documentation. I've also modified example 27 to provide a more >> rigorous test / demonstration of the plarc capabilities. > > Hi Andrew: > > That extra page to example 27 sure is a good-looking example of the > plarc capability. Do you have any further plans there or it is time > to propagate that page to the other languages? I don't have any specific plans, unless anyone can think of anything. We now demonstrate ellipses as well as circles, partial arcs, filled arcs and rotating ellipses - which pretty much exercises the API. If no-one has any other suggestions I'll start propagating the changes. As an aside, the fill bug demonstrates that although we have now achieved at least one use of each API function in the standard examples, we still have a number of capabilities / options which are not tested. From a regression point of view I think any additions to broaden the scope of our testing would be useful. Andrew |
From: Hezekiah M. C. <hez...@us...> - 2011-08-03 23:20:44
|
On Wed, Aug 3, 2011 at 8:57 AM, Andrew Ross <and...@us...> wrote: > > I've now properly implemented the rotate option in plarc and updated > the documentation. I've also modified example 27 to provide a more > rigorous test / demonstration of the plarc capabilities. I have updated the Cairo driver to support rotated arcs as well, as it uses Cairo's arc primitive rather than drawing an arc as a polygon. Thank you l.f.hwang for the patch and thank you Andrew for the commit and updates! Hez |
From: Alan W. I. <ir...@be...> - 2011-08-04 01:54:32
|
On 2011-08-03 19:14-0400 Hezekiah M. Carty wrote: > On Wed, Aug 3, 2011 at 8:57 AM, Andrew Ross > <and...@us...> wrote: >> >> I've now properly implemented the rotate option in plarc and updated >> the documentation. I've also modified example 27 to provide a more >> rigorous test / demonstration of the plarc capabilities. > > I have updated the Cairo driver to support rotated arcs as well, as it > uses Cairo's arc primitive rather than drawing an arc as a polygon. Those results look much better than the equivalent polyline ones. I would always like qt to keep up with cairo and vice versa so I hope somebody is willing to do the same thing for the qt device driver. QPainter::drawArc documented at http://doc.qt.nokia.com/4.7/qpainter.html#drawarc looks like it would be quite helpful. Alan __________________________ Alan W. Irwin Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); PLplot scientific plotting software package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |
From: Hezekiah M. C. <hez...@us...> - 2011-08-04 02:39:41
|
On Wed, Aug 3, 2011 at 9:54 PM, Alan W. Irwin <ir...@be...> wrote: > On 2011-08-03 19:14-0400 Hezekiah M. Carty wrote: > >> On Wed, Aug 3, 2011 at 8:57 AM, Andrew Ross >> <and...@us...> wrote: >>> >>> I've now properly implemented the rotate option in plarc and updated >>> the documentation. I've also modified example 27 to provide a more >>> rigorous test / demonstration of the plarc capabilities. >> >> I have updated the Cairo driver to support rotated arcs as well, as it >> uses Cairo's arc primitive rather than drawing an arc as a polygon. > > Those results look much better than the equivalent polyline ones. > > I would always like qt to keep up with cairo and vice versa so I hope > somebody is willing to do the same thing for the qt device driver. > QPainter::drawArc documented at > http://doc.qt.nokia.com/4.7/qpainter.html#drawarc looks like it would > be quite helpful. > I don't know Qt or the structure of the Qt driver well enough to make the addition, but the Cairo implementation should provide a reasonable example to work from for someone who does. I think the SVG driver and possibly others could have "native" rotated arc support as well. Hez |
From: Andrew R. <and...@us...> - 2011-08-10 08:55:28
|
On Wed, Aug 03, 2011 at 10:17:08PM -0400, Hezekiah M. Carty wrote: > On Wed, Aug 3, 2011 at 9:54 PM, Alan W. Irwin <ir...@be...> wrote: > > On 2011-08-03 19:14-0400 Hezekiah M. Carty wrote: > > > >> On Wed, Aug 3, 2011 at 8:57 AM, Andrew Ross > >> <and...@us...> wrote: > >>> > >>> I've now properly implemented the rotate option in plarc and updated > >>> the documentation. I've also modified example 27 to provide a more > >>> rigorous test / demonstration of the plarc capabilities. > >> > >> I have updated the Cairo driver to support rotated arcs as well, as it > >> uses Cairo's arc primitive rather than drawing an arc as a polygon. > > > > Those results look much better than the equivalent polyline ones. > > > > I would always like qt to keep up with cairo and vice versa so I hope > > somebody is willing to do the same thing for the qt device driver. > > QPainter::drawArc documented at > > http://doc.qt.nokia.com/4.7/qpainter.html#drawarc looks like it would > > be quite helpful. > > > > I don't know Qt or the structure of the Qt driver well enough to make > the addition, but the Cairo implementation should provide a reasonable > example to work from for someone who does. I think the SVG driver and > possibly others could have "native" rotated arc support as well. I've now implemented driver support for arcs (including rotated arcs) in the Qt driver too. I'm no Qt expert, but all looks to work fine. There does seem to be a lot of duplicated code in the Qt driver for the different flavours of device. From a maintenance point of view it would be good to streamline this a bit. Since it is all in C++ this should be perfectly do-able. Another little project for the list... Andrew |
From: Alan W. I. <ir...@be...> - 2011-08-10 21:20:36
|
On 2011-08-10 09:55+0100 Andrew Ross wrote: > I've now implemented driver support for arcs (including rotated arcs) in > the Qt driver too. I'm no Qt expert, but all looks to work fine. Your change generated a big improvement in the looks of the last page you get from examples/c/x27c -dev qtwidget Thanks for bringing qt back on par with the cairo device driver again. > There does seem to be a lot of duplicated code in the Qt driver for the > different flavours of device. From a maintenance point of view it would > be good to streamline this a bit. Since it is all in C++ this should be > perfectly do-able. Another little project for the list... To give what I remember of the history of that, it was nice compact code at one point, but it depended on dynamic_cast which was not working correctly in some cases (perhaps due to a bug in g++?). So to fix a specific issue with the external device, Hazen decided (revision 10109) to change to C-style casts for the extqt device which proliferated some dispatch functions. Then Alban followed with another patch (revision 10168) to make the equivalent change across the board (which proliferated lots more dispatch functions) because he no longer trusted dynamic_cast at all. So I doubt we would want to go back to dynamic_casts (unless whatever the issue was with dynamic_cast in the Linux build tools is now fixed). However, there are likely other ways to eliminate the duplicated code so I hope someone here is willing to look at that. Alan __________________________ Alan W. Irwin Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); PLplot scientific plotting software package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |