From: Joost K. <jku...@ho...> - 2013-08-10 07:07:28
|
> "basic" corresponds to backend=0=wxBACKEND_DC (or fallback to that), > "AGG" corresponds to backend=1=wxBACKEND_AGG (_if_ the AGG library has > been installed so it doesn't fall back to wxBACKEND_DC), and wxGC (to > finally answer your question) corresponds to backend=2=wxBACKEND_GC > (_if_ the wxwidgets build and install has configured the graphics > context variant of wxwidgets which is detected by whether > wxUSE_GRAPHICS_CONTEXT (#defined by the wxwidgets build and install) > is true. See also wxwidgets_gc.cpp. My installation doesn't have wxUSE_GRAPHICS_CONTEXT enabled, so in my case the wxwidgets driver can't use the wxBACKEND_GC. I did a bit of a search, and it's disabled in the wxwidgets compile settings by default (I'm using wxWidgets' latest stable, 2.8.12. I know the newest 2.9.x uses GC by default though). I compile wxWidgets through Visual Studio as provided (thus not modifying any settings). I do so because when I tried the 2.9.x once, it completely failed my existing programs and I couldn't recover or recode them so they would work with 2.9.x. Thus I'm waiting for a new wxWidgets stable release before I'm going to upgrade (although I'm not using a PLplot stable release...). > One interesting option that > appears to be relevant to graphics context is > > --enable-graphics_ctx use graphics context 2D drawing API > > So I intend to try that option for my next wxwidgets build > to see if that allows me to use the wxBACKEND_GC variant > of the PLplot wxwidgets device, and I suggest you do the > same. In that case, I need to modify setup_inc.h for it to work (Visual Studio solutions...). As I haven't tried this before, I'm not sure if I'll run into build problems because of the dependence on gdiplus.lib. I can try. > Getting back to the eofill topic, > > If you stick strictly to backend=0 what happens when you > run example 27 with and without the -eofill option? Do you get > the same results for the two cases or very different results? In my case, I get clearly different results, and you're right, my wxWidgets returns always to basic, even if I specify backend=2. Thus I have no problems with the DC backend. > For Linux, it appears the backend=0=wxBACKEND_DC case only uses the > even-odd fill rule regardless of whether -eofill is used or not, i.e. > regardless of whether we call > > DrawPolygon( pls->dev_npts, points, xoffset, yoffset, wxODDEVEN_RULE ) > or > DrawPolygon( pls->dev_npts, points, xoffset, yoffset, wxWINDING_RULE ) > > I am pretty sure that is due to a bug in the implementation of the > wxwidgets software package (or at least the Debian wheezy binary > package for it). That's interesting, because in my case it just works! Maybe it's the newer version of wxWidgets that causes this to do so? Or the Linux device driver within wxWidgets (because wxDC has OS dependent implementation I think)? |