The formal definition of the PLplot C API is everything that is defined
in the include file plplot.h
. This includes all
the function prototypes, the defined structures and the semantics of
the constants. The list of symbols currently exported by the shared
library libplplot.h
that are declared in
plplot.h
is the following:
plAlloc2dGrid plgcol0 plscmap1_range plClearOpts plgcol0a plscmap1a plFindCommand plgcolbg plscmap1l plFindName plgcolbga plscmap1la plFree2dGrid plgcompression plscmap1n plGetCursor plgdev plscol0 plGetFlt plgdidev plscol0a plGetInt plgdiori plscolbg plGetName plgdiplt plscolbga plMergeOpts plgdrawmode plscolor plMinMax2dGrid plgesc plscompression plOptUsage plgfam plsdev plResetOpts plgfci plsdevdata plSetUsage plgfile plsdidev plStatic2dGrid plgfnam plsdimap plTranslateCursor plgfont plsdiori pl_cmd plglevel plsdiplt pl_setcontlabelformat plgpage plsdiplz pl_setcontlabelparam plgra plsdrawmode pladv plgradient plseed plarc plgriddata plseopH plaxes plgspa plsesc plbin plgstrm plsetopt plbop plgver plsexit plbox plgvpd plsfam plbox3 plgvpw plsfci plbtime plgxax plsfile plcalc_world plgyax plsfnam plclear plgzax plsfont plcol0 plhist plshade plcol1 plhlsrgb plshades plcolorbar plimage plslabelfunc plconfigtime plimagefr plsmaj plcont plinit plsmem plcpstrm pljoin plsmema plctime pllab plsmin pldid2pc pllegend plsori pldip2dc pllightsource plspage plend plline plspal0 plend1 plline3 plspal1 plenv pllsty plspause plenv0 plmap plsstrm pleop plmapfill plssub plerrx plmapline plssym plerry plmapstring plstar plf2eval plmaptex plstart plf2eval1 plmeridians plstransform plf2eval2 plmesh plstring plf2evalr plmeshc plstring3 plf2ops_c plmkstrm plstripa plf2ops_grid_c plmtex plstripc plf2ops_grid_col_major plmtex3 plstripd plf2ops_grid_row_major plot3d plstyl plfamadv plot3dc plsurf3d plfcont plot3dcl plsurf3dl plfgriddata plparseopts plsvect plfill plpat plsvpa plfill3 plpath plsxax plfimage plpoin plsxwin plfimagefr plpoin3 plsyax plflush plpoly3 plsym plfmesh plprec plszax plfmeshc plpsty pltext plfont plptex pltimefmt plfontld plptex3 pltr0 plfplot3d plrandd pltr1 plfplot3dc plreplot pltr2 plfplot3dcl plrgbhls pltr2f plfshade plsButtonEH pltr2p plfshade1 plsError plvasp plfshades plsKeyEH plvect plfsurf3d plsabort plvpas plfsurf3dl plsbopH plvpor plfvect plschr plvsta plgDevs plscmap0 plw3d plgFileDevs plscmap0a plwidth plgchr plscmap0n plwind plgcmap1_range plscmap1 plxormod
Another important aspect of compatibility regard the Application
Binary Interface (ABI). Backwards compatibility can be broken by
changes in the C structures made public through
plplot.h
. Currently, they are:
typedef struct { PLCHAR_VECTOR opt; int ( *handler )( PLCHAR_VECTOR, PLCHAR_VECTOR, PLPointer ); PLPointer client_data; PLPointer var; long mode; PLCHAR_VECTOR syntax; PLCHAR_VECTOR desc; } PLOptionTable; typedef struct { int type; // of event (CURRENTLY UNUSED) unsigned int state; // key or button mask unsigned int keysym; // key selected unsigned int button; // mouse button selected PLINT subwindow; // subwindow (alias subpage, alias subplot) number char string[PL_MAXKEY]; // translated string int pX, pY; // absolute device coordinates of pointer PLFLT dX, dY; // relative device coordinates of pointer PLFLT wX, wY; // world coordinates of pointer } PLGraphicsIn; typedef struct { PLFLT dxmi, dxma, dymi, dyma; // min, max window rel dev coords PLFLT wxmi, wxma, wymi, wyma; // min, max window world coords } PLWindow; typedef struct { unsigned int x, y; // upper left hand corner unsigned int width, height; // window dimensions } PLDisplay; typedef struct { PLFLT_FE_POINTER f; PLINT nx, ny, nz; } PLfGrid; typedef struct { PLFLT_NC_MATRIX f; PLINT nx, ny; } PLfGrid2; typedef struct { PLFLT_NC_FE_POINTER xg, yg, zg; PLINT nx, ny, nz; } PLcGrid; typedef struct { PLFLT_NC_MATRIX xg, yg, zg; PLINT nx, ny; } PLcGrid2; typedef struct { unsigned char r; // red unsigned char g; // green unsigned char b; // blue PLFLT a; // alpha (or transparency) PLCHAR_VECTOR name; } PLColor; typedef struct { PLFLT c1; // hue or red PLFLT c2; // lightness or green PLFLT c3; // saturation or blue PLFLT p; // position PLFLT a; // alpha (or transparency) int alt_hue_path; // if set, interpolate through h=0 } PLControlPt; typedef struct { PLINT cmd; PLINT result; } PLBufferingCB; typedef struct { PLFLT exp_label_disp; PLFLT exp_label_pos; PLFLT exp_label_just; } PLLabelDefaults; typedef struct { PLFLT ( *get )( PLPointer p, PLINT ix, PLINT iy ); PLFLT ( *set )( PLPointer p, PLINT ix, PLINT iy, PLFLT z ); PLFLT ( *add )( PLPointer p, PLINT ix, PLINT iy, PLFLT z ); PLFLT ( *sub )( PLPointer p, PLINT ix, PLINT iy, PLFLT z ); PLFLT ( *mul )( PLPointer p, PLINT ix, PLINT iy, PLFLT z ); PLFLT ( *div )( PLPointer p, PLINT ix, PLINT iy, PLFLT z ); PLINT ( *is_nan )( PLPointer p, PLINT ix, PLINT iy ); void ( *minmax )( PLPointer p, PLINT nx, PLINT ny, PLFLT_NC_SCALAR zmin, PLFLT_NC_SCALAR zmax ); // // f2eval is backwards compatible signature for "f2eval" functions that // existed before plf2ops "operator function families" were used. // PLFLT ( *f2eval )( PLINT ix, PLINT iy, PLPointer p ); } plf2ops_t; typedef struct { size_t size; PLPointer buffer; } plbuffer;