Hi Phil, Alan This solution worked for me, thanks
> The easiest way to do this at the moment is something like > > wxPLplotstream* pls = plotwindow->GetStream(); > pls->adv( 0 ); > pls->scolbg(255, 255, 255); > pls->clear(); > //rest of your plotting code > I'm very open to better ways > to do this if you have suggestions. The only suggestion I have is the one I sent on my previous mail, that was *not* to have wxPLplotstream::Create call init() and let the user do that on his application. By looking at the samples, I believe they all call plinit() at start, my complete test code is now #include "wx/wxprec.h" #include "wx/wx.h" #include "wxPLplotwindow.h" template< class WXWINDOW > void Plot(wxPLplotwindow<WXWINDOW> *plotwindow); ///////////////////////////////////////////////////////////////////////////////////////////////////// //wxAppPlot ///////////////////////////////////////////////////////////////////////////////////////////////////// class wxAppPlot : public wxApp { public: virtual bool OnInit(); }; IMPLEMENT_APP(wxAppPlot) bool wxAppPlot::OnInit() { wxPLplotwindow<wxFrame> *frame = new wxPLplotwindow<wxFrame>(); frame->Create(NULL, wxID_ANY, wxT("wxPLplot"), wxDefaultPosition, wxSize(900, 700)); frame->Show(); Plot(frame); return true; } ///////////////////////////////////////////////////////////////////////////////////////////////////// //Plot ///////////////////////////////////////////////////////////////////////////////////////////////////// template< class WXWINDOW > void Plot(wxPLplotwindow<WXWINDOW> *plotwindow) { wxPLplotstream* pls = plotwindow->GetStream(); pls->adv(0); pls->scolbg(255, 255, 255); pls->clear(); //render const int NSIZE = 101; PLFLT x[NSIZE], y[NSIZE]; PLFLT xmin = 0, xmax = 100, ymin = 0, ymax = 10; for (int i = 0; i < NSIZE; i++) { x[i] = i; y[i] = 5; } plschr(0, 1.0); plcol0(8); plenv(xmin, xmax, ymin, ymax, 0, 0); pllab("x", "y", "Label"); plpoin(NSIZE, x, y, 46); plotwindow->RenewPlot(); } -Pedro ----- Original Message ----- From: "Phil Rosenberg" <p.d.rosenb...@gmail.com> To: "Pedro Vicente" <pedro.vice...@space-research.org> Cc: <plplot-gene...@lists.sourceforge.net>; <plplot-devel@lists.sourceforge.net> Sent: Thursday, October 06, 2016 5:55 AM Subject: Re: [Plplot-devel] [Plplot-general] wxWidgets driver -- change the default blackbackground > Hi Pedro > The easiest way to do this at the moment is something like > > wxPLplotstream* pls = plotwindow->GetStream(); > pls->adv( 0 ); > pls->scolbg(255, 255, 255); > pls->clear(); > //rest of your plotting code > > If you have multiple subpages then you will need to do this on each > page. Also if your subpages don't cover all the windows then you can > call the SetBackgroundColour method of wxPLplotwindow and this will > clear the whole window to the given colour initially. > > Hope that helps. If not then let me know. I'm very open to better ways > to do this if you have suggestions. > > Phil > > > On 6 October 2016 at 06:00, Pedro Vicente > <pedro.vice...@space-research.org> wrote: >> >> so, there are at least 2 solutions for this : >> 1) the quick is just to modify the PLplot source code , in the call to >> >> void wxPLplotstream::Create >> >> comment the call to >> >> //init(); >> >> then in our app code , do the init() call after Create() . as >> >> ~~~ >> bool wxAppPlot::OnInit() >> { >> wxPLplotwindow<wxFrame> *frame = new wxPLplotwindow<wxFrame>(); >> frame->Create(NULL, wxID_ANY, wxT("wxPLplot"), >> wxDefaultPosition, >> wxSize(900, 700)); >> frame->Show(); >> >> //set background color (0) to white RGB(255,255,255) >> //must be called before plinit() >> plscolbg(255, 255, 255); >> >> wxPLplotstream* pls = frame->GetStream(); >> pls->init(); >> >> //change color (0) to black RGB(0, 0, 0) >> //must be called after plinit() >> plscol0(0, 0, 0, 0); >> >> Plot(frame); >> return true; >> } >> ~~~ >> >> >> since it seems the only way to modiy the background color is to do the >> above >> sequence >> this is a change that I recommend to be included in the libray, since I >> believe the other drivers require a call to init() too, but not the >> wxWidgets driver. >> >> 2) not modifying the source code. In this case , I think it should be >> possible to derive 2 classes , >> a) one from wxPLplotwindow >> b) other from wxPLplotwindow >> >> then do everything in those classes as now except the call to init() >> >> >> but if the developers could do option 1) that probably would be the best >> thanks >> >> >> -Pedro >> >> >> >> >> ----- Original Message ----- >> From: Pedro Vicente >> To: plplot-gene...@lists.sourceforge.net >> Sent: Wednesday, October 05, 2016 6:42 PM >> Subject: [Plplot-general] wxWidgets driver -- change the default >> blackbackground >> >> Hi >> >> >> I am trying to change the default black background color using the >> wxWidgets >> driver >> >> If using the SVG driver this can be done as explained here >> >> https://sourceforge.net/p/plplot/mailman/message/2817799/ >> >> the trick being calling >> >> plscolbg() >> >> before >> >> plinit(); >> >> like the sample code below marked "SVG Driver" does >> >> >> However for the wxWidegts driver , it seems we do not do a call to >> >> plinit(); >> >> but rather this is done inside the C++ stream initialization >> >> From the wxWidgets PLplot sample below >> >> the >> >> plinit(); >> >> is made inside >> >> >> >> frame->Create(NULL, wxID_ANY, wxT("wxPLplot")); >> >> >> so I don't find a way to call the plscolbg() function before >> >> >> How can this be accomplished ? >> >> >> >> >> I also tried to modify the default colors of the default palette >> >> cmap0_default.pal >> >> 16 >> #000000 >> >> so that the first is white >> >> this does work *but* only after the window is redrawn (it first shows the >> default red on black); >> this seems like a bug to me >> >> >> Also, what's the call to increase the font size? >> On the wxWidgets driver the font looks tiny >> >> Thanks ! >> >> >> Sample code wxWidgets >> >> >> >> bool >> >> wxAppPlot::OnInit() >> >> { >> >> wxPLplotwindow<wxFrame> *frame = new wxPLplotwindow<wxFrame>(); >> >> frame->Create( >> >> NULL, wxID_ANY, wxT("wxPLplot")); >> >> frame->Show(); >> >> Plot(frame); >> >> return true; >> >> } >> >> ///////////////////////////////////////////////////////////////////////////////////////////////////// >> >> //Plot >> >> ///////////////////////////////////////////////////////////////////////////////////////////////////// >> >> template >> >> < class WXWINDOW > >> >> void >> >> Plot(wxPLplotwindow<WXWINDOW> *plotwindow) >> >> { >> >> wxPLplotstream* pls = plotwindow->GetStream(); >> >> //render >> >> plotwindow->RenewPlot(); >> >> } >> >> >> >> >> Sample code SVG driver >> >> void >> >> atms_dwell_granu_t::plot() >> >> { >> >> //set SVG device and output file name >> >> plsdev("svg"); >> >> plsfnam("atms_dwell_granu.svg"); >> >> //set background color (0) to white RGB(255,255,255) >> >> //must be called before plinit() >> >> plscolbg(255, 255, 255); >> >> //initialize plplot >> >> plinit(); >> >> //change color (0) to black RGB(0, 0, 0) >> >> //must be called after plinit() >> >> plscol0(0, 0, 0, 0); >> >> ///////////////////////////////////////////////////////////////////////////////////////////////////// >> >> //render >> >> ///////////////////////////////////////////////////////////////////////////////////////////////////// >> >> PLFLT xmin, xmax, ymin, ymax; >> >> PLFLT *x, *y; >> >> const int NSIZE = iOrbit_all; >> >> xmin = 0; >> >> xmax = NSIZE; >> >> ymin = -1.0; >> >> ymax = 6.0; >> >> x = >> >> new PLFLT[NSIZE]; >> >> y = >> >> new PLFLT[NSIZE]; >> >> plcol0(0); >> >> plenv(xmin, xmax, ymin, ymax, 0, 0); >> >> pllab("", "Current (Amps)", "Scan Drive Main Motor Current"); >> >> //time axis >> >> for (int idx_orb = 0; idx_orb < NSIZE; idx_orb++) >> >> { >> >> x[idx_orb] = idx_orb; >> >> } >> >> //mean >> >> for (int idx_orb = 0; idx_orb < NSIZE; idx_orb++) >> >> { >> >> y[idx_orb] = DWELL_SAMPLE_APID517_Orbit[0][TLM_NUM_ORBIT - 1][idx_orb]; >> >> } >> >> plpoin(NSIZE, x, y, 46); >> >> plend(); >> >> delete[] x; >> >> delete[] y; >> >> } >> >> ________________________________ >> >> ------------------------------------------------------------------------------ >> Check out the vibrant tech community on one of the world's most >> engaging tech sites, SlashDot.org! http://sdm.link/slashdot >> >> ________________________________ >> >> _______________________________________________ >> Plplot-general mailing list >> plplot-gene...@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/plplot-general >> >> >> ------------------------------------------------------------------------------ >> Check out the vibrant tech community on one of the world's most >> engaging tech sites, SlashDot.org! http://sdm.link/slashdot >> _______________________________________________ >> Plplot-devel mailing list >> Plplot-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/plplot-devel >> > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel