On Tuesday, September 30, 2008 at 14:30:56 (+0200) Davide Cesari writes:
 > Hi, I made the original post on plplot-general list, concerning the 
 > difficulties encountered in extending the clipping region/disabling 
 > clipping which gave rise to the discussion about the plgvpw adjustment, 
 > so I come back to the clipping problem.
 >      Actually, giving a deeper look at the code, I noticed that the 
 > instruments for doing clip/unclip are already there, so I propose this 
 > function for clipping/unclipping which makes in C a better job than what 
 > I was trying to do in Fortran; I understand from the discussion that it 
 > is unlikely that the plplot API may be extended, however I think that it 
 > would be useful to have some kind of control on viewport clipping 
 > without having to do many not so intuitive calls, so here is my proposal.
 >      Best regards, and thank you for the discussion, Davide

A clip mode setting function sounds like a better approach.  But like every
API addition the associated:

 - multiple language bindings
 - documentation additions

makes it a bit of a chore.  I tend to do the lazy thing and grab the stream
pointer then get/set whatever data I need from there, but of course that's of
no help if you're not using C/C++.

For this example I'd rename it something like plsclipmode() to make its
function more transparent.

Also, static values are evil -- previous values of clip limits need to be
stored in the plstream struct, and note that all default to zero when a new
stream is constructed.

 > #include "plplotP.h"
 > 
 > /*
 > 
 > Control viewport clipping state of current page/subpage
 > 
 > mode (PLINT, input)
 > 
 >  0 restore clipping to previous state (makes sense if plsclip
 >    has been previously called with mode = 1 or mode = 2 for the
 >    current page/subpage, otherwise results are unpredictable)
 >  1 disable clipping (clip area is now the whole viewport)
 >  2 disable clipping (clip area is now the whole subpage)
 > 
 > */
 > 
 > void c_plsclip(PLINT mode)
 > {
 >   static PLINT crxmin=-1, crxmax=-1, crymin=-1, crymax=-1;
 >   PLINT pxmin, pxmax, pymin, pymax;
 > 
 >   if (mode == 0) {
 >     /* uninitialised case, return */
 >     if (crxmin == -1) return;
 >     /* reset clip limits to original values */
 >     plP_sclp(crxmin, crxmax, crymin, crymax);
 >   } else if (mode == 1) {
 >     /* disable clipping (clip area is now the whole viewport) */
 >     /* remember original values */
 >     plP_gclp(&crxmin, &crxmax, &crymin, &crymax);
 >     /* get page physical limits */
 >     plP_gphy(&pxmin, &pxmax, &pymin, &pymax);
 >     /* set clip limits to physical limits */
 >     plP_sclp(pxmin, pxmax, pymin, pymax);
 >   } else if (mode == 2) {
 >     /* disable clipping (clip area is now the whole subpage) */
 >     /* remember original values */
 >     plP_gclp(&crxmin, &crxmax, &crymin, &crymax);
 >     /* get subpage limits */
 >     pxmin = plsc->sppxmi; pxmax = plsc->sppxma;
 >     pymin = plsc->sppymi; pymax = plsc->sppyma;
 >     /* set clip limits to subpage limits */
 >     plP_sclp(pxmin, pxmax, pymin, pymax);
 >   }
 > 
 > }
 > -------------------------------------------------------------------------
 > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
 > Build the coolest Linux based applications with Moblin SDK & win great prizes
 > Grand prize is a trip for two to an Open Source event anywhere in the world
 > http://moblin-contest.org/redirect.php?banner_id=100&url=/_______________________________________________
 > Plplot-devel mailing list
 > Plplot-devel@lists.sourceforge.net
 > https://lists.sourceforge.net/lists/listinfo/plplot-devel

-- 
Maurice LeBrun

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to