PLplot 5.15.0
wxPLplotstream.cpp
Go to the documentation of this file.
1// Copyright (C) 2015 Phil Rosenberg
2// Copyright (C) 2005 Werner Smekal
3//
4// This file is part of PLplot.
5//
6// PLplot is free software; you can redistribute it and/or modify
7// it under the terms of the GNU Library General Public License as published
8// by the Free Software Foundation; either version 2 of the License, or
9// (at your option) any later version.
10//
11// PLplot is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU Library General Public License for more details.
15//
16// You should have received a copy of the GNU Library General Public License
17// along with PLplot; if not, write to the Free Software
18// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19//
20
21// wxwidgets headers
22#include "wx/wx.h"
23
24// plplot headers
25#include "plplotP.h"
26
27#include "wxPLplotstream.h"
28
30// Here we set the driver (wxwidgets :), and tell plplot in which dc to
31// plot to and the size of the canvas. We also check and set several
32// device style options.
33//
34wxPLplotstream::wxPLplotstream( wxDC *dc, int width, int height, int style ) : plstream()
35{
36 m_created = false;
37 Create( dc, width, height, style );
38}
39
40
42{
43 m_created = false;
44}
45
47// We set the driver to be wxwidgets, set the page size, set the driver options and initialize
48// the plot.
49void wxPLplotstream::Create( wxDC *dc, int width, int height, int style )
50{
51 if ( m_created )
52 {
53 plabort( "wxPLplotstream::Create - Stream already created" );
54 return;
55 }
56 const size_t bufferSize = 256;
57
58 m_width = width;
59 m_height = height;
60 m_style = style;
61
62 sdev( "wxwidgets" );
63 spage( 90.0, 90.0, m_width, m_height, 0, 0 );
64
65 char drvopt[bufferSize], buffer[bufferSize];
66 drvopt[0] = '\0';
67
68 sprintf( buffer, "hrshsym=%d,text=%d",
70 m_style & wxPLPLOT_DRAW_TEXT ? 1 : 0 );
71 strncat( drvopt, buffer, bufferSize - strlen( drvopt ) );
72
73 setopt( "-drvopt", drvopt );
74
75 sdevdata( (void *) dc );
76
77 init();
78}
79
81// the device is NULL
82void wxPLplotstream::SetDC( wxDC *dc )
83{
84 set_stream();
85 cmd( PLESC_DEVINIT, (void *) dc );
86}
87
90{
91}
92
93
95// code processed before every call of a plplot functions, since set_stream()
96// is called before every plplot function. Not used in the moment.
97//
99{
101}
102
103
105// to set the new size. You need to call RenewPlot afterwards.
106//
107void wxPLplotstream::SetSize( int width, int height )
108{
109 wxSize size( width, height );
110 cmd( PLESC_RESIZE, (void *) &size );
111 m_width = width;
112 m_height = height;
113}
114
115
117//
119{
120 replot();
121}
122
123void wxPLplotstream::ImportBuffer( void *buffer, size_t size )
124{
126 buf.buffer = buffer;
127 buf.size = size;
129 RenewPlot();
130}
131
132void wxPLplotstream::AppendBuffer( void *buffer, size_t size )
133{
135 buf.buffer = buffer;
136 buf.size = size;
139}
140
142{
143 PLBOOL f = fixed ? 1 : 0;
144 cmd( PLESC_FIXASPECT, &f );
145}
146
148{
149 return m_created;
150}
void cmd(PLINT op, void *ptr)
Definition: plstream.cc:2482
PLINT setopt(const char *opt, const char *optarg)
Definition: plstream.cc:2434
void sdevdata(void *data)
Definition: plstream.cc:1718
virtual void set_stream(void)
Definition: plstream.h:133
void replot(void)
Definition: plstream.cc:1391
void spage(PLFLT xp, PLFLT yp, PLINT xleng, PLINT yleng, PLINT xoff, PLINT yoff)
Definition: plstream.cc:1932
void width(PLFLT width)
Definition: plstream.cc:2244
void sdev(const char *devname)
Definition: plstream.cc:1597
void init(void)
Definition: plstream.cc:981
void set_stream()
Calls some code before every PLplot command.
int m_width
Width of dc/plot area.
int m_style
style of this plot
void SetDC(wxDC *dc)
Set a new dc to write to.
~wxPLplotstream()
Destructor, although we have no resources to free.
void AppendBuffer(void *buffer, size_t size)
Append a buffer of plplot commands.
void RenewPlot()
Redo plot and update dc.
wxPLplotstream()
Constructor.
int m_height
Height of dc/plot area.
void SetFixedAspectRatio(bool fixed)
Set Fixed aspect ratio of the plot.
void ImportBuffer(void *buffer, size_t size)
Import a buffer of plplot commands.
void SetSize(int width, int height)
Set new size of plot area.
void Create(wxDC *dc, int width, int height, int style)
Called from the constructor or can be called by the user if the default constructor is used.
void plabort(PLCHAR_VECTOR errormsg)
Definition: plctrl.c:1894
static PLINT * buffer
Definition: plfill.c:74
#define PLESC_FIXASPECT
Definition: plplot.h:308
#define PLESC_IMPORT_BUFFER
Definition: plplot.h:309
#define PLESC_DEVINIT
Definition: plplot.h:296
#define PLESC_APPEND_BUFFER
Definition: plplot.h:310
#define PLESC_RESIZE
Definition: plplot.h:275
#define PLESC_FLUSH_REMAINING_BUFFER
Definition: plplot.h:311
PLINT PLBOOL
Definition: plplot.h:204
static char buf[200]
Definition: tclAPI.c:873
@ wxPLPLOT_DRAW_TEXT
@ wxPLPLOT_USE_HERSHEY_SYMBOLS