Jeroen Demeyer on Mon, 09 Jan 2017 17:24:58 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
[PATCH] Move rectdraw0() to a method of PARI_plot |
>From 164a23086079b7b2fad5ff40b69339fce444560d Mon Sep 17 00:00:00 2001 From: Jeroen Demeyer <jdemeyer@cage.ugent.be> Date: Mon, 9 Jan 2017 15:55:05 +0100 Subject: [PATCH 1/2] Move rectdraw0 to a "method" PARI_plot.draw --- src/graph/plotQt.c | 14 ++++---------- src/graph/plotQt4.c | 14 ++++---------- src/graph/plotWin32.c | 6 +++++- src/graph/plotX.c | 10 ++++++---- src/graph/plotfltk.c | 11 ++++------- src/graph/plotnull.c | 9 --------- src/graph/plotport.c | 11 +++++++++-- src/graph/plotps.c | 7 +++++-- src/graph/rect.h | 2 +- 9 files changed, 38 insertions(+), 46 deletions(-) diff --git a/src/graph/plotQt.c b/src/graph/plotQt.c index 9aa3a81..b9eebe2 100644 --- a/src/graph/plotQt.c +++ b/src/graph/plotQt.c @@ -566,20 +566,13 @@ void PlotWindow::save( int id) { #endif // __FANCY_WIN__ - -// -// Implementation of the two architecture-dependent functions -// (from rect.h) requested by pari's plotting routines -// - - -void -rectdraw0(long *w, long *x, long *y, long lw) +/* Interface to PARI's plotting functions */ +static void +draw(long *w, long *x, long *y, long lw) { if (pari_daemon()) return; // parent process returns pari_close(); - PARI_get_plot(); // launch Qt window int argc = 1; char *argv[] = { "gp", "-qws"}; // set argc = 2 for cross @@ -621,5 +614,6 @@ PARI_get_plot(void) pari_plot.vunit = 3; // pari_plot.fwidth = 6; // font width pari_plot.fheight = 9; // and height + pari_plot.draw = &draw; pari_plot.init = 1; // flag: pari_plot is set now! } diff --git a/src/graph/plotQt4.c b/src/graph/plotQt4.c index 1ef7c40..07bc570 100644 --- a/src/graph/plotQt4.c +++ b/src/graph/plotQt4.c @@ -553,20 +553,13 @@ void PlotWindow::save( int id) #endif // __FANCY_WIN__ - -// -// Implementation of the two architecture-dependent functions -// (from rect.h) requested by pari's plotting routines -// - - -void -rectdraw0(long *w, long *x, long *y, long lw) +/* Interface to PARI's plotting functions */ +static void +draw(long *w, long *x, long *y, long lw) { if (pari_daemon()) return; // parent process returns pari_close(); - PARI_get_plot(); // launch Qt window int argc = 1; // set argc = 2 for cross @@ -608,5 +601,6 @@ PARI_get_plot(void) pari_plot.vunit = 3; // pari_plot.fwidth = 6; // font width pari_plot.fheight = 9; // and height + pari_plot.draw = &draw; pari_plot.init = 1; // flag: pari_plot is set now! } diff --git a/src/graph/plotWin32.c b/src/graph/plotWin32.c index 8af4d66..9084832 100644 --- a/src/graph/plotWin32.c +++ b/src/graph/plotWin32.c @@ -68,7 +68,10 @@ static void DrawString(void *data, long x, long y, char *text, long numtext) TextOut((HDC)data, x, y, text, numtext); } -void rectdraw0(long *w, long *x, long *y, long lw) + +/* Interface to PARI's plotting functions */ +static void +draw(long *w, long *x, long *y, long lw) { char tmppath[MAX_PATH], fname[MAX_PATH]; struct plot_eng plotWin32; @@ -121,4 +124,5 @@ PARI_get_plot(void) pari_plot.fwidth = tm.tmAveCharWidth; pari_plot.fheight = tm.tmHeight; + pari_plot.draw = &draw; } diff --git a/src/graph/plotX.c b/src/graph/plotX.c index 13bf839..9391e98 100644 --- a/src/graph/plotX.c +++ b/src/graph/plotX.c @@ -154,8 +154,10 @@ PARI_ColorSetUp(Display *display, GEN colors) } } -void -rectdraw0(long *w, long *x, long *y, long lw) + +/* Interface to PARI's plotting functions */ +static void +draw(long *w, long *x, long *y, long lw) { long oldwidth,oldheight; struct plot_eng plotX; @@ -173,7 +175,6 @@ rectdraw0(long *w, long *x, long *y, long lw) if (pari_daemon()) return; /* parent process returns */ - PARI_get_plot(); pari_close(); display = XOpenDisplay(NULL); @@ -293,6 +294,7 @@ PARI_get_plot(void) pari_plot.fwidth = 9; pari_plot.hunit = 5; pari_plot.vunit = 5; - pari_plot.init = 1; + pari_plot.draw = &draw; + pari_plot.init = 1; XCloseDisplay(display); } diff --git a/src/graph/plotfltk.c b/src/graph/plotfltk.c index 3879728..acd11bf 100644 --- a/src/graph/plotfltk.c +++ b/src/graph/plotfltk.c @@ -189,20 +189,16 @@ int Plotter::handle(int event) } } -// -// Implementation of the two architecture-dependent functions -// (from rect.h) requested by pari's plotting routines -// -void -rectdraw0(long *w, long *x, long *y, long lw) +/* Interface to PARI's plotting functions */ +static void +fltk_draw(long *w, long *x, long *y, long lw) { Plotter *win; if (pari_daemon()) return; // parent process returns pari_close(); - PARI_get_plot(); Fl::visual(FL_DOUBLE|FL_INDEX); win = new Plotter( w, x, y, lw); @@ -225,5 +221,6 @@ PARI_get_plot(void) pari_plot.vunit = 3; // pari_plot.fwidth = 6; // font width pari_plot.fheight = 9; // and height + pari_plot.draw = &fltk_draw; pari_plot.init = 1; // flag: pari_plot is set now! } diff --git a/src/graph/plotnull.c b/src/graph/plotnull.c index fdf26e3..1eee925 100644 --- a/src/graph/plotnull.c +++ b/src/graph/plotnull.c @@ -15,14 +15,5 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "rect.h" void -rectdraw0(long *w, long *x, long *y, long lw) -{ - (void)w; - (void)x; - (void)y; - (void)lw; -} - -void PARI_get_plot(void) { pari_err(e_MISC,"high resolution graphics disabled"); } diff --git a/src/graph/plotport.c b/src/graph/plotport.c index c6de38f..5f4fcc1 100644 --- a/src/graph/plotport.c +++ b/src/graph/plotport.c @@ -1565,7 +1565,7 @@ rectplothrawin(long grect, dblPointList *data, long flags) if (W) { if (W == &pari_plot) - rectdraw0(w,wx,wy,2); + W->draw(w,wx,wy,2); else postdraw0(w,wx,wy,2, 0); killrect(w[1]); @@ -1704,6 +1704,7 @@ PARI_get_psplot(void) pari_psplot.fwidth = 6; pari_psplot.hunit = 5; pari_psplot.vunit = 5; + pari_psplot.draw = NULL; /* Currently unused for ps plotting */ } static void @@ -1736,7 +1737,13 @@ gendraw(GEN list, long ps, long flag) ne = itos(win); check_rect(ne); w[i] = ne; } - if (ps) postdraw0(w,x,y,n,flag); else rectdraw0(w,x,y,n); + if (ps) + postdraw0(w,x,y,n,flag); + else + { + PARI_get_plot(); + pari_plot.draw(w,x,y,n); + } pari_free(x); pari_free(y); pari_free(w); } diff --git a/src/graph/plotps.c b/src/graph/plotps.c index dcdecc1..cad9574 100644 --- a/src/graph/plotps.c +++ b/src/graph/plotps.c @@ -19,8 +19,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "paripriv.h" #include "rect.h" -void -rectdraw0(long *w, long *x, long *y, long lw) + +/* Interface to PARI's plotting functions */ +static void +draw(long *w, long *x, long *y, long lw) { struct plot_eng plot; FILE *file; @@ -53,5 +55,6 @@ PARI_get_plot(void) pari_plot.fwidth = 6; pari_plot.hunit = 3; pari_plot.vunit = 3; + pari_plot.draw = &draw; pari_plot.init = 1; } diff --git a/src/graph/rect.h b/src/graph/rect.h index b8a3476..1c60cd5 100644 --- a/src/graph/rect.h +++ b/src/graph/rect.h @@ -23,6 +23,7 @@ typedef struct PARI_plot { long fheight; long init; char name[PLOT_NAME_LEN+1]; + void (*draw)(long *w, long *x, long *y, long lw); } PARI_plot; extern PARI_plot pari_plot, pari_psplot; @@ -281,6 +282,5 @@ void gen_rectdraw0(struct plot_eng *eng, long *w, long *x, long *y, long lw, dou /* architecture-dependent plot file (plotX.c ...) */ void PARI_get_plot(void); -void rectdraw0(long *w, long *x, long *y, long lw); ENDEXTERN -- 2.7.3