From 03517ae86ca034baef27f6af6fdb9e632e27881c Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Fri, 11 Jun 2021 18:43:11 +0200 Subject: [PATCH] Define the function DevFinalize as used in the previous commit. --- src/frontend/display.c | 26 ++++++++++++++++---------- src/frontend/display.h | 1 + src/frontend/postsc.c | 5 +++++ src/frontend/postsc.h | 1 + src/frontend/svg.c | 6 ++++++ src/frontend/svg.h | 1 + src/include/ngspice/ftedev.h | 3 ++- 7 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/frontend/display.c b/src/frontend/display.c index 56f5589bc..8ace0ee53 100644 --- a/src/frontend/display.c +++ b/src/frontend/display.c @@ -45,7 +45,7 @@ DISPDEVICE device[] = { (disp_fn_Close_t *) nop, (disp_fn_Clear_t *) nop, (disp_fn_DrawLine_t *) nop, (disp_fn_Arc_t *) nop, (disp_fn_Text_t *) nop, (disp_fn_DefineColor_t *) nop, (disp_fn_DefineLinestyle_t *) nop, - (disp_fn_SetLinestyle_t *) nop, (disp_fn_SetColor_t *) nop, (disp_fn_Update_t *) nop, + (disp_fn_SetLinestyle_t *) nop, (disp_fn_SetColor_t *) nop, (disp_fn_Update_t *) nop, (disp_fn_Finalize_t *) nop, (disp_fn_Track_t *) nop, (disp_fn_MakeMenu_t *) nop, (disp_fn_MakeDialog_t *) nop, gen_Input, (disp_fn_DatatoScreen_t *) nop,}, @@ -55,7 +55,7 @@ DISPDEVICE device[] = { X11_Close, X11_Clear, X11_DrawLine, X11_Arc, X11_Text, X11_DefineColor, X11_DefineLinestyle, - X11_SetLinestyle, X11_SetColor, X11_Update, + X11_SetLinestyle, X11_SetColor, X11_Update, (disp_fn_Finalize_t*) nop, (disp_fn_Track_t *) nodev, (disp_fn_MakeMenu_t *) nodev, (disp_fn_MakeDialog_t *) nodev, X11_Input, gen_DatatoScreen,}, #endif @@ -66,7 +66,7 @@ DISPDEVICE device[] = { WIN_Close, WIN_Clear, WIN_DrawLine, WIN_Arc, WIN_Text, WIN_DefineColor, WIN_DefineLinestyle, - WIN_SetLinestyle, WIN_SetColor, WIN_Update, + WIN_SetLinestyle, WIN_SetColor, WIN_Update, (disp_fn_Finalize_t*) nop, (disp_fn_Track_t *) nodev, (disp_fn_MakeMenu_t *) nodev, (disp_fn_MakeDialog_t *) nodev, gen_Input, gen_DatatoScreen, }, /* WIN_DiagramReady */ @@ -76,7 +76,7 @@ DISPDEVICE device[] = { WPRINT_Close, WPRINT_Clear, WPRINT_DrawLine, WPRINT_Arc, WPRINT_Text, WPRINT_DefineColor, WPRINT_DefineLinestyle, - WPRINT_SetLinestyle, WPRINT_SetColor, WPRINT_Update, + WPRINT_SetLinestyle, WPRINT_SetColor, WPRINT_Update, (disp_fn_Finalize_t*) nop, (disp_fn_Track_t *) nodev, (disp_fn_MakeMenu_t *) nodev, (disp_fn_MakeDialog_t *) nodev, (disp_fn_Input_t *) nodev, gen_DatatoScreen, }, /* WPRINT_DiagramReady */ #endif @@ -87,7 +87,7 @@ DISPDEVICE device[] = { sp_Tk_Close, sp_Tk_Clear, sp_Tk_DrawLine, sp_Tk_Arc, sp_Tk_Text, sp_Tk_DefineColor, sp_Tk_DefineLinestyle, - sp_Tk_SetLinestyle, sp_Tk_SetColor, sp_Tk_Update, + sp_Tk_SetLinestyle, sp_Tk_SetColor, sp_Tk_Update, (disp_fn_Finalize_t*) nop, (disp_fn_Track_t *) nodev, (disp_fn_MakeMenu_t *) nodev, (disp_fn_MakeDialog_t *) nodev, (disp_fn_Input_t *) nodev, gen_DatatoScreen, }, #endif @@ -97,7 +97,7 @@ DISPDEVICE device[] = { Plt5_Close, Plt5_Clear, Plt5_DrawLine, Plt5_Arc, Plt5_Text, (disp_fn_DefineColor_t *) nodev, (disp_fn_DefineLinestyle_t *) nodev, - Plt5_SetLinestyle, Plt5_SetColor, Plt5_Update, + Plt5_SetLinestyle, Plt5_SetColor, Plt5_Update, (disp_fn_Finalize_t*) nop, (disp_fn_Track_t *) nodev, (disp_fn_MakeMenu_t *) nodev, (disp_fn_MakeDialog_t *) nodev, (disp_fn_Input_t *) nodev, gen_DatatoScreen, }, @@ -106,7 +106,7 @@ DISPDEVICE device[] = { PS_Close, PS_Clear, PS_DrawLine, PS_Arc, PS_Text, (disp_fn_DefineColor_t *) nodev, (disp_fn_DefineLinestyle_t *) nodev, - PS_SetLinestyle, PS_SetColor, PS_Update, + PS_SetLinestyle, PS_SetColor, PS_Update, PS_Finalize, (disp_fn_Track_t *) nodev, (disp_fn_MakeMenu_t *) nodev, (disp_fn_MakeDialog_t *) nodev, (disp_fn_Input_t *) nodev, gen_DatatoScreen, }, @@ -115,7 +115,7 @@ DISPDEVICE device[] = { SVG_Close, SVG_Clear, SVG_DrawLine, SVG_Arc, SVG_Text, (disp_fn_DefineColor_t*)nodev, (disp_fn_DefineLinestyle_t*)nodev, - SVG_SetLinestyle, SVG_SetColor, SVG_Update, + SVG_SetLinestyle, SVG_SetColor, SVG_Update, SVG_Finalize, (disp_fn_Track_t*)nodev, (disp_fn_MakeMenu_t*)nodev, (disp_fn_MakeDialog_t*)nodev, (disp_fn_Input_t*)nodev, gen_DatatoScreen, }, @@ -124,7 +124,7 @@ DISPDEVICE device[] = { GL_Close, GL_Clear, GL_DrawLine, GL_Arc, GL_Text, (disp_fn_DefineColor_t *) nodev, (disp_fn_DefineLinestyle_t *) nodev, - GL_SetLinestyle, GL_SetColor, GL_Update, + GL_SetLinestyle, GL_SetColor, GL_Update, (disp_fn_Finalize_t*) nop, (disp_fn_Track_t *) nodev, (disp_fn_MakeMenu_t *) nodev, (disp_fn_MakeDialog_t *) nodev, (disp_fn_Input_t *) nodev, gen_DatatoScreen, }, @@ -133,7 +133,7 @@ DISPDEVICE device[] = { (disp_fn_Close_t *) nop, (disp_fn_Clear_t *) nodev, (disp_fn_DrawLine_t *) nodev, (disp_fn_Arc_t *) nodev, (disp_fn_Text_t *) nodev, (disp_fn_DefineColor_t *) nodev, (disp_fn_DefineLinestyle_t *) nodev, - (disp_fn_SetLinestyle_t *) nodev, (disp_fn_SetColor_t *) nodev, (disp_fn_Update_t *) nop, + (disp_fn_SetLinestyle_t *) nodev, (disp_fn_SetColor_t *) nodev, (disp_fn_Update_t *) nop, (disp_fn_Finalize_t*) nop, (disp_fn_Track_t *) nodev, (disp_fn_MakeMenu_t *) nodev, (disp_fn_MakeDialog_t *) nodev, gen_Input, (disp_fn_DatatoScreen_t *) nodev, }, @@ -296,6 +296,12 @@ DevUpdate(void) dispdev->Update(); } +void +DevFinalize(void) +{ + if (dispdev) + dispdev->Finalize(); +} /* note: screen coordinates are relative to window so need to add viewport offsets */ diff --git a/src/frontend/display.h b/src/frontend/display.h index 355ff7737..e50eaf480 100644 --- a/src/frontend/display.h +++ b/src/frontend/display.h @@ -25,6 +25,7 @@ void DefineLinestyle(int linestyleid, int mask); void SetLinestyle(int linestyleid); void SetColor(int colorid); void DevUpdate(void); +void DevFinalize(void); void DatatoScreen(GRAPH *graph, double x, double y, int *screenx, int *screeny); void Input(REQUEST *request, RESPONSE *response); void SaveText(GRAPH *graph, char *text, int x, int y); diff --git a/src/frontend/postsc.c b/src/frontend/postsc.c index 64b563fcb..65a73ba2f 100644 --- a/src/frontend/postsc.c +++ b/src/frontend/postsc.c @@ -490,6 +490,11 @@ int PS_Update(void) return 0; } +int PS_Finalize(void) +{ + fprintf(plotfile, "stroke\n"); + return 0; +} /**************** PRIVAT FUNCTIONS OF PS FRONTEND *****************************/ diff --git a/src/frontend/postsc.h b/src/frontend/postsc.h index 4f5680a9a..d7b3da821 100644 --- a/src/frontend/postsc.h +++ b/src/frontend/postsc.h @@ -16,5 +16,6 @@ disp_fn_Text_t PS_Text; disp_fn_SetLinestyle_t PS_SetLinestyle; disp_fn_SetColor_t PS_SetColor; disp_fn_Update_t PS_Update; +disp_fn_Finalize_t PS_Finalize; #endif diff --git a/src/frontend/svg.c b/src/frontend/svg.c index 2874e83d6..74673bc27 100644 --- a/src/frontend/svg.c +++ b/src/frontend/svg.c @@ -517,6 +517,12 @@ SVG_Update(void) return 0; } +int +SVG_Finalize(void) +{ + fputs("\"/>\n", plotfile); + return 0; +} /**************** PRIVATE FUNCTIONS OF SVG FRONTEND ***************************/ diff --git a/src/frontend/svg.h b/src/frontend/svg.h index 5f89c2f39..a8f978ff3 100644 --- a/src/frontend/svg.h +++ b/src/frontend/svg.h @@ -13,5 +13,6 @@ disp_fn_Text_t SVG_Text; disp_fn_SetLinestyle_t SVG_SetLinestyle; disp_fn_SetColor_t SVG_SetColor; disp_fn_Update_t SVG_Update; +disp_fn_Finalize_t SVG_Finalize; #endif diff --git a/src/include/ngspice/ftedev.h b/src/include/ngspice/ftedev.h index 1dbba6194..3d5cb9102 100644 --- a/src/include/ngspice/ftedev.h +++ b/src/include/ngspice/ftedev.h @@ -29,6 +29,7 @@ typedef int disp_fn_DefineLinestyle_t (int linestyleid, int mask); typedef int disp_fn_SetLinestyle_t (int linestyleid); typedef int disp_fn_SetColor_t (int colorid); typedef int disp_fn_Update_t (void); +typedef int disp_fn_Finalize_t (void); typedef int disp_fn_Track_t (void); typedef int disp_fn_MakeMenu_t (void); typedef int disp_fn_MakeDialog_t (void); @@ -53,7 +54,7 @@ typedef struct { disp_fn_SetLinestyle_t *SetLinestyle; disp_fn_SetColor_t *SetColor; disp_fn_Update_t *Update; -/* int (*NDCtoScreen)(); */ + disp_fn_Finalize_t *Finalize; disp_fn_Track_t *Track; disp_fn_MakeMenu_t *MakeMenu; disp_fn_MakeDialog_t *MakeDialog;