PlPlotWidget::~PlPlotWidget(){ //qDebug() << "plplot destructor called"; PLINT cur_strm; plgstrm( &cur_strm ); plsstrm( strm ); plfreeqtdev(); // also deletes the device ("plot" variable) ! plsstrm( cur_strm ); }
static void plplot_state_close( plplot_state_type * state ) { plsstrm(state->stream); plend1(); plend(); util_safe_free( state->filename ); util_safe_free( state->device ); free( state->plbox_xopt ); free( state->plbox_yopt ); free( state ); }
static void plplot_set_window_size( plot_driver_type * driver , int width , int height) { char * geometry = util_alloc_sprintf("%dx%d", width, height); plsetopt("geometry", geometry); free( geometry ); { plplot_state_type * state = driver->state; plsstrm( state->stream ); //{ // printf("---------- Calling plinit()\n"); // errno = 0; // pllib_init(); // printf("%s: after plinit(): errno:%d / strerror:%s\n",__func__ , errno , strerror( errno )); //} plinit(); pladv(0); /* And what does this do ... */ plvsta(); } }
static plplot_state_type * plplot_state_alloc( const void * init_arg ) { plplot_state_type * state = util_malloc( sizeof * state ); state->stream = 0; { const arg_pack_type * arg_pack = arg_pack_safe_cast_const( init_arg ); state->filename = util_alloc_string_copy( arg_pack_iget_const_ptr( arg_pack , 0) ); state->device = util_alloc_string_copy( arg_pack_iget_const_ptr( arg_pack , 1) ); plsstrm(state->stream); plsdev(state->device); /* Can this be NULL?? */ if (strcmp(state->device , "xwin") != 0) plsfnam(state->filename); } state->logx = false; state->logy = false; state->plbox_xopt = util_alloc_string_copy( PLOT_DEFAULT_PLBOX_XOPT ); state->plbox_yopt = util_alloc_string_copy( PLOT_DEFAULT_PLBOX_YOPT ); /** This color initialization must be here - do not really understand what for. */ plscol0(WHITE, 255, 255, 255); plscol0(BLACK, 0, 0, 0); plfontld(0); //plinit(); return state; }
int main( int argc, char *argv[] ) { PLINT digmax, cur_strm, new_strm; char ver[80]; // plplot initialization // Parse and process command line arguments plMergeOpts( options, "x01c options", notes ); plparseopts( &argc, argv, PL_PARSE_FULL ); // Get version number, just for kicks plgver( ver ); fprintf( stdout, "PLplot library version: %s\n", ver ); // Initialize plplot // Divide page into 2x2 plots // Note: calling plstar replaces separate calls to plssub and plinit plstar( 2, 2 ); // Select font set as per input flag if ( fontset ) plfontld( 1 ); else plfontld( 0 ); // Set up the data // Original case xscale = 6.; yscale = 1.; xoff = 0.; yoff = 0.; // Do a plot plot1( 0 ); // Set up the data xscale = 1.; yscale = 0.0014; yoff = 0.0185; // Do a plot digmax = 5; plsyax( digmax, 0 ); plot1( 1 ); plot2(); plot3(); // // Show how to save a plot: // Open a new device, make it current, copy parameters, // and replay the plot buffer // if ( f_name ) // command line option '-save filename' { printf( "The current plot was saved in color Postscript under the name `%s'.\n", f_name ); plgstrm( &cur_strm ); // get current stream plmkstrm( &new_strm ); // create a new one plsfnam( f_name ); // file name plsdev( "psc" ); // device type plcpstrm( cur_strm, 0 ); // copy old stream parameters to new stream plreplot(); // do the save by replaying the plot buffer plend1(); // finish the device plsstrm( cur_strm ); // return to previous stream } // Let's get some user input if ( locate_mode ) { for (;; ) { if ( !plGetCursor( &gin ) ) break; if ( gin.keysym == PLK_Escape ) break; pltext(); printf( "subwin = %d, wx = %f, wy = %f, dx = %f, dy = %f\n", gin.subwindow, gin.wX, gin.wY, gin.dX, gin.dY ); printf( "keysym = 0x%02x, button = 0x%02x, string = '%s', type = 0x%02x, state = 0x%02x\n", gin.keysym, gin.button, gin.string, gin.type, gin.state ); plgra(); } } // Don't forget to call plend() to finish off! plend(); exit( 0 ); }
int main(int argc, char *argv[]) { int i, digmax; int xleng0 = 400, yleng0 = 300, xoff0 = 200, yoff0 = 200; int xleng1 = 400, yleng1 = 300, xoff1 = 500, yoff1 = 500; /* Select either TK or DP driver and use a small window */ /* Using DP results in a crash at the end due to some odd cleanup problems */ /* The geometry strings MUST be in writable memory */ char geometry_master[] = "500x410+100+200"; char geometry_slave[] = "500x410+650+200"; char driver[80]; /* plplot initialization */ /* Parse and process command line arguments */ (void) plparseopts(&argc, argv, PL_PARSE_FULL); plgdev(driver); printf("Demo of multiple output streams via the %s driver.\n", driver); printf("Running with the second stream as slave to the first.\n"); printf("\n"); /* Set up first stream */ plsetopt("geometry", geometry_master); plsdev(driver); plssub(2, 2); plinit(); /* Start next stream */ plsstrm(1); /* Turn off pause to make this a slave (must follow master) */ plsetopt("geometry", geometry_slave); plspause(0); plsdev(driver); plinit(); /* Set up the data & plot */ /* Original case */ plsstrm(0); xscale = 6.; yscale = 1.; xoff = 0.; yoff = 0.; plot1(); /* Set up the data & plot */ xscale = 1.; yscale = 1.e+6; plot1(); /* Set up the data & plot */ xscale = 1.; yscale = 1.e-6; digmax = 2; plsyax(digmax, 0); plot1(); /* Set up the data & plot */ xscale = 1.; yscale = 0.0014; yoff = 0.0185; digmax = 5; plsyax(digmax, 0); plot1(); /* To slave */ /* The pleop() ensures the eop indicator gets lit. */ plsstrm(1); plot4(); pleop(); /* Back to master */ plsstrm(0); plot2(); plot3(); /* To slave */ plsstrm(1); plot5(); pleop(); /* Back to master to wait for user to advance */ plsstrm(0); pleop(); /* Call plend to finish off. */ plend(); exit(0); }