This request updates Gnuplot to version 6.0.4, changes the PDF generation to use LuaTeX and removes very outdated French documentation. Furthermore, it re-bases present patches and removes two obsolete patches. For further information, please refer to the changes file.

OBS-URL: https://build.opensuse.org/package/show/Publishing/gnuplot?expand=0&rev=181
This commit is contained in:
2026-01-28 08:57:20 +00:00
committed by Git OBS Bridge
commit bbead93147
27 changed files with 5994 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.osc

3
Gnuplot6.pdf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a3f929870bbeebb4eb83fae7976947b0cb4d99faee12686813d2e4d16b2fcfe9
size 4022910

6
README.whynot Normal file
View File

@@ -0,0 +1,6 @@
Why PDF support is not enabled:
===============================
Requires libpdf which is a commercial library and therefore not
part of SuSE LINUX. As a replacement the `pdfcairo' terminal
can be used to generate output in pdf.

7
_constraints Normal file
View File

@@ -0,0 +1,7 @@
<constraints>
<hardware>
<disk>
<size unit="G">4</size>
</disk>
</hardware>
</constraints>

3
_multibuild Normal file
View File

@@ -0,0 +1,3 @@
<multibuild>
<package>doc</package>
</multibuild>

57
fix4bug1241684.patch Normal file
View File

@@ -0,0 +1,57 @@
commit a5897feadc4be73b0ffd8458556c47117bd24d03
Author: Ethan A Merritt <merritt@u.washington.edu>
Date: Tue Mar 25 22:51:54 2025 -0700
hpgl: font name parsing overruns the string by one char
if no comma is present in the font name.
E.g.
set term pcl
set title "Title" font "sans" # no comma in font name
plot x
Bug 2781
diff --git term/hpgl.trm term/hpgl.trm
index 8e763d174..d432f7e39 100644
--- term/hpgl.trm
+++ term/hpgl.trm
@@ -1653,28 +1653,22 @@ TERM_PUBLIC int
HPGL2_set_font(const char *font)
{
char name[MAX_ID_LEN + 1];
- int sep;
- int int_size;
- double size;
+ char *sep;
+ double size = HPGL2_point_size;
if (font == NULL)
font = "";
- sep = strcspn(font, ",");
strncpy(name, font, sizeof(name)-1);
- if (sep < sizeof(name))
- name[sep] = NUL;
-
-/* determine font size, use default from options if invalid */
- int_size = 0;
- /* FIXME: use strtod instead */
- sscanf(&(font[sep + 1]), "%d", &int_size);
- if (int_size > 0)
- size = int_size;
- else
- size = HPGL2_point_size;
-
+ /* determine font size, use default from options if invalid */
+ sep = strchr(font, ',');
+ if (sep) {
+ double req_size = strtod(sep+1, NULL);
+ if (req_size > 0)
+ size = req_size;
+ *sep = '\0';
+ }
return HPGL2_set_font_size(name, size);
}

39
gnuplot-4.4.0-x11ovf.dif Normal file
View File

@@ -0,0 +1,39 @@
---
src/gplt_x11.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
--- src/gplt_x11.c
+++ src/gplt_x11.c 2020-07-17 07:29:52.061621215 +0000
@@ -955,6 +955,8 @@ mainloop()
nfds = cn + 1;
while (1) {
+ int ipc;
+
XFlush(dpy); /* see above */
FD_ZERO(&tset);
@@ -992,7 +994,11 @@ mainloop()
process_event(&xe);
}
}
- if ((X11_ipc = fopen(X11_ipcpath, "r"))) {
+
+ if ((ipc = open(X11_ipcpath, O_RDONLY|O_CREAT|O_CLOEXEC|O_EXCL)) < 0)
+ break;
+
+ if ((X11_ipc = dfopen(ipc, "r"))) {
unlink(X11_ipcpath);
record();
fclose(X11_ipc);
@@ -1224,8 +1230,8 @@ static int read_input(void);
static int
read_input()
{
- static int rdbuf_size = 10 * X11_COMMAND_BUFFER_LENGTH;
- static char rdbuf[10 * X11_COMMAND_BUFFER_LENGTH];
+ const int rdbuf_size = 10 * X11_COMMAND_BUFFER_LENGTH;
+ static char rdbuf[(10 * X11_COMMAND_BUFFER_LENGTH)+1];
static int total_chars;
static int rdbuf_offset;
static int buf_offset;

133
gnuplot-4.6.0-demo.diff Normal file
View File

@@ -0,0 +1,133 @@
---
demo/fit.dem | 4 ++++
demo/poldat.dem | 2 +-
demo/simple.dem | 3 +--
src/loadpath.c | 21 +++++++++++++++++++++
src/show.c | 9 +++++++++
5 files changed, 36 insertions(+), 3 deletions(-)
--- demo/fit.dem
+++ demo/fit.dem 2020-07-17 07:25:00.022670914 +0000
@@ -6,6 +6,7 @@ set dummy x, y
print "Some examples how data fitting using nonlinear least squares fit can be done."
print ''
+logfile = "`mktemp /tmp/fit.log.XXXXXX`"
print "We fit a straight line to the data -- only as a demo without physical meaning."
l(x) = y0 + m*x
@@ -25,6 +26,7 @@ set title 'data set and initial paramete
plot 'lcdemo.dat', l(x)
pause -1 "Now start fitting... (-> return)"
+set fit logfile logfile
fit l(x) 'lcdemo.dat' via y0, m
set title 'unweighted fit'
plot 'lcdemo.dat', l(x)
@@ -320,6 +322,7 @@ print ' "fit3.dat" u 1:2:3:4 via a0,
pause -1 "Press enter to proceed with the next example."
reset
+set fit logfile logfile
print "\n"
print "The fit command can handle errors in the independent variable, too."
print "The problem shown here is Pearson's data with York's weights.\n"
@@ -425,6 +428,7 @@ print "to time."
print ''
pause -1 "Done with fitting demo (-> return)"
reset
+set fit logfile logfile
set encoding myencoding
# release datablock
undefine $PearsonYork
--- demo/poldat.dem
+++ demo/poldat.dem 2020-07-17 07:25:00.022670914 +0000
@@ -7,7 +7,7 @@ unset grid
unset polar
set title "Primitive Smith Chart"
unset key
-set xlabel "Impedance or Admittance Coordinates"
+set xlabel "Impedance or Admittance Coordinates" offset 12,-1
set para
set rrange [-0 : 10]
set trange [-pi : pi]
--- demo/simple.dem
+++ demo/simple.dem 2020-07-17 07:25:00.022670914 +0000
@@ -5,14 +5,13 @@
#
set title "Simple Plots" font ",20"
set key left box
-set samples 50
+set samples 400
set style data points
plot [-10:10] sin(x),atan(x),cos(atan(x))
pause -1 "Hit return to continue"
set key right nobox
-set samples 100
plot [-pi/2:pi] cos(x),-(sin(x) > sin(x+1) ? sin(x) : sin(x+1))
pause -1 "Hit return to continue"
--- src/loadpath.c
+++ src/loadpath.c 2024-01-08 09:15:14.362384507 +0000
@@ -31,6 +31,10 @@
]*/
#include <string.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
#include "loadpath.h"
#include "alloc.h"
@@ -72,6 +76,18 @@ init_loadpath()
if (!loadpath)
{
char *envlib = getenv("GNUPLOT_LIB");
+#ifdef GNUPLOT_LIB_DEFAULT
+ char *defenvlib = (char*)0;
+ struct stat st;
+ if ((stat(GNUPLOT_LIB_DEFAULT, &st) == 0) && S_ISDIR(st.st_mode)) {
+ if (envlib) {
+ if (asprintf(&defenvlib, "%s:%s", envlib, GNUPLOT_LIB_DEFAULT) > 0)
+ envlib = defenvlib;
+ } else
+ envlib = GNUPLOT_LIB_DEFAULT;
+ }
+#endif /* GNUPLOT_LIB_DEFAULT */
+
if (envlib) {
int len = strlen(envlib);
loadpath = gp_strdup(envlib);
@@ -81,6 +97,11 @@ init_loadpath()
PATHSEP_TO_NUL(loadpath);
}
/* else: NULL = empty */
+#ifdef GNUPLOT_LIB_DEFAULT
+ if (defenvlib)
+ free(defenvlib);
+#endif /* GNUPLOT_LIB_DEFAULT */
+
}
/* point to env portion of loadpath */
envptr = loadpath;
--- src/show.c
+++ src/show.c 2020-07-17 07:25:00.022670914 +0000
@@ -1138,6 +1138,15 @@ show_version(FILE *fp)
p /* type "help seeking-assistance" */
);
+#ifdef GNUPLOT_LIB_DEFAULT
+ {
+ struct stat st;
+ if ((stat(GNUPLOT_LIB_DEFAULT, &st) == 0) && S_ISDIR(st.st_mode)) {
+ fprintf(fp, "%s\n%s\tType `load \"all.dem\"` to display a large number of examples.", p, p);
+ fprintf(fp, "\n%s\tThey are located at %s/*\n%s\n", p, GNUPLOT_LIB_DEFAULT, p);
+ }
+ }
+#endif
/* show version long */
if (almost_equals(c_token, "l$ong")) {

99
gnuplot-4.6.0-fonts.diff Normal file
View File

@@ -0,0 +1,99 @@
Change default font and fix potential buffer overflow
For X11 multi-byte we want to ensure there is a good default font selected,
so we change the default font to font variants present on openSUSE systems.
Prevent buffer overflow when changing the default font to a maliciously
crafted font name.
Make output for missing character sets less verbose by preferring debug
prints
---
src/gplt_x11.c | 33 +++++++++++++++++++++++++++------
1 file changed, 27 insertions(+), 6 deletions(-)
Index: src/gplt_x11.c
===================================================================
--- src/gplt_x11.c.orig
+++ src/gplt_x11.c
@@ -106,15 +106,16 @@
#include "stdfn.h"
#include "gp_types.h"
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+#include <string.h>
#include <X11/Xos.h>
#include <X11/Xlib.h>
#include <X11/Xresource.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>
#include <X11/keysym.h>
-#ifdef USE_X11_MULTIBYTE
-# include <X11/Xlocale.h>
-#endif
#include <X11/XKBlib.h> /* for XkbKeycodeToKeysym */
#include <assert.h>
@@ -122,6 +123,12 @@
#include "gplt_x11.h"
#include "version.h"
+#ifdef USE_X11_MULTIBYTE
+# include <locale.h>
+# include <langinfo.h>
+# include <X11/Xlocale.h>
+#endif
+
#ifdef EXPORT_SELECTION
# undef EXPORT_SELECTION
#endif /* EXPORT SELECTION */
@@ -526,8 +533,8 @@ static char *gpFallbackFont(void);
static int gpXGetFontascent(XFontStruct *cfont);
enum set_encoding_id encoding = S_ENC_DEFAULT; /* EAM - mirrored from core code by 'QE' */
-static char default_font[196] = { '\0' };
-static char default_encoding[16] = { '\0' };
+static char default_font[256] = { '\0' };
+static char default_encoding[64] = { '\0' };
#define Nwidths 10
static unsigned int widths[Nwidths] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
@@ -2294,6 +2301,8 @@ exec_cmd(plot_struct *plot, char *comman
/* Save the request default font */
c = &(buffer[strlen(buffer)-1]);
while (*c <= ' ') *c-- = '\0';
+ if (strlen(&buffer[2]) == 0)
+ break;
strncpy(default_font, &buffer[2], sizeof(default_font)-1);
FPRINTF((stderr, "gnuplot_x11: exec_cmd() set default_font to \"%s\"\n", default_font));
break;
@@ -5814,7 +5823,7 @@ XFontStruct *gpXLoadQueryFont (Display *
}
#else
if (first_time) {
- fprintf(stderr,"gnuplot_x11: Some character sets not available\n");
+ FPRINTF(("gnuplot_x11: Some character sets not available\n"));
first_time = FALSE;
}
while (n_miss-- > 0)
@@ -5966,6 +5975,18 @@ pr_font( char *fontname )
}
#ifdef USE_X11_MULTIBYTE
+ if ((!fontname || !(*fontname)) && multibyte_fonts_usable) {
+ const char * codeset = nl_langinfo(CODESET);
+ if (strcasestr(codeset, "UTF-8")) {
+ const char* utf8 = "mbfont:-*-sazanami*mincho-medium-r-normal--16-* \
+-*-mincho-medium-r-normal--16-*,-*-verdana-medium-r-normal--16-* \
+-*-dejavu*sans-medium-r-normal--16-*,-*-medium-r-normal--16-*";
+ strncpy(default_font, utf8, strlen(utf8)+1);
+ }
+ }
+#endif
+
+#ifdef USE_X11_MULTIBYTE
if (fontname && strncmp(fontname, "mbfont:", 7) == 0) {
if (multibyte_fonts_usable) {
usemultibyte = 1;

107
gnuplot-4.6.0.dif Normal file
View File

@@ -0,0 +1,107 @@
---
gnuplot-6.0.0/configure.ac | 2 +-
gnuplot-6.0.0/docs/Makefile.am | 12 ++++++++----
gnuplot-6.0.0/src/gadgets.h | 2 +-
gnuplot-6.0.0/src/gplt_x11.c | 9 ++++++---
gnuplot-6.0.0/src/plot.c | 16 ++++++++++++++++
gnuplot-6.0.0/src/term.h | 6 +++---
6 files changed, 35 insertions(+), 12 deletions(-)
Index: gnuplot-6.0.4/configure.ac
===================================================================
--- gnuplot-6.0.4.orig/configure.ac
+++ gnuplot-6.0.4/configure.ac
@@ -391,7 +391,7 @@ if test "$with_readline" != no; then
dnl check for terminal library
dnl this is a very cool solution from octave's configure.in
gp_tcap=""
- for termlib in ncurses curses termcap terminfo termlib; do
+ for termlib in tinfo ncurses curses termcap terminfo termlib; do
AC_CHECK_LIB(${termlib}, tputs, [gp_tcap="$gp_tcap -l$termlib"])
case "$gp_tcap" in
*-l${termlib}*)
Index: gnuplot-6.0.4/src/gadgets.h
===================================================================
--- gnuplot-6.0.4.orig/src/gadgets.h
+++ gnuplot-6.0.4/src/gadgets.h
@@ -533,7 +533,7 @@ extern TBOOLEAN clip_lines2;
extern TBOOLEAN clip_points;
extern TBOOLEAN clip_radial;
-#define SAMPLES 100 /* default number of samples for a plot */
+#define SAMPLES 500 /* default number of samples for a plot */
extern int samples_1;
extern int samples_2;
Index: gnuplot-6.0.4/src/gplt_x11.c
===================================================================
--- gnuplot-6.0.4.orig/src/gplt_x11.c
+++ gnuplot-6.0.4/src/gplt_x11.c
@@ -2518,9 +2518,12 @@ exec_cmd(plot_struct *plot, char *comman
}
}
/* X11_justify_text(mode) - set text justification mode */
- else if (*buffer == 'J')
- sscanf(buffer, "J%d", (int *) &plot->jmode);
-
+ else if (*buffer == 'J') {
+ int jmode;
+ sscanf(buffer, "J%d", &jmode);
+ plot->jmode = jmode;
+ }
+
else if (*buffer == 'A')
sscanf(buffer + 1, "%lf", &plot->angle);
Index: gnuplot-6.0.4/src/plot.c
===================================================================
--- gnuplot-6.0.4.orig/src/plot.c
+++ gnuplot-6.0.4/src/plot.c
@@ -299,6 +299,22 @@ main(int argc_orig, char **argv)
rl_getc_function = getc_wrapper;
#endif
+#ifdef __linux__
+ if (!getenv("GNUHELP")) {
+ const char* msg = setlocale(LC_MESSAGES, NULL);
+ if (msg) {
+ char hfile[64];
+ struct stat buf;
+
+ sprintf(hfile, "/usr/share/gnuplot/%s/gnuplot-", gnuplot_version);
+ strncat(hfile, msg, 2);
+ strcat (hfile, ".gih");
+ if (stat(hfile, &buf) == 0)
+ setenv("GNUHELP", strdup(hfile), 0);
+ }
+ }
+#endif
+
#if defined(HAVE_LIBREADLINE)
/* T.Walter 1999-06-24: 'rl_readline_name' must be this fix name.
* It is used to parse a 'gnuplot' specific section in '~/.inputrc'
Index: gnuplot-6.0.4/src/term.h
===================================================================
--- gnuplot-6.0.4.orig/src/term.h
+++ gnuplot-6.0.4/src/term.h
@@ -233,9 +233,9 @@
#include "emf.trm"
/* Roland DXY800A plotter */
-/* #include "dxy.trm" */
+#include "dxy.trm"
/* QMS/EXCL laserprinter (Talaris 1590 and others) */
-/* #include "excl.trm" */
+#include "excl.trm"
/* fig graphics */
#include "fig.trm"
@@ -268,7 +268,7 @@
/* #include "imagen.trm" */
/* Kyocera Prescribe printer */
-/* #include "kyo.trm" */
+#include "kyo.trm"
/* Frame Maker MIF 3.00 format driver */
#ifdef HAVE_MIF

View File

@@ -0,0 +1,134 @@
--- gnuplot.texi
+++ gnuplot.texi 2024-01-09 09:29:57.128897341 +0000
@@ -13570,8 +13570,7 @@ but
@end example
See also
-@uref{http://www.gnuplot.info/demo/poldat.html,poldat.dem: polar plot using @ref{angles} demo.
-}
+@uref{http://www.gnuplot.info/demo/poldat.html,poldat.dem}: polar plot using @ref{angles} demo.
@node arrow, autoscale, angles, set-show
@subsection arrow
@@ -26079,15 +26078,12 @@ Syntax:
@{[no]enhanced@}
@end example
-@end itemizeif
@example
@{fillchar @{solid|"<char>"@}@}
@{[no]attributes@}
@{mono|ansi|ansi256|ansirgb@}
@end example
-@end itemizeif
-
where <xchars> and <ychars> set the size of the text block. The default is
79 by 24. The last newline is printed only if `feed` is enabled.
@@ -26129,8 +26125,6 @@ See also e.g. the description at
@uref{https://en.wikipedia.org/wiki/ANSI_escape_code#Colors,https://en.wikipedia.org/wiki/ANSI_escape_code#Colors
}
-@end itemizeif
-
The `attributes` option enables bold and italic text on terminals or
emulators that support the escape sequences
@example
@@ -26475,8 +26469,6 @@ Preferred combinations are `medium norma
With each of these drivers, a binary copy is required on a PC to print.
Do not use `print`---use instead `copy file /b lpt1:`.
-@end itemizeif
-
@node excl, fig, epson_180dpi, complete_list_of_terminals
@subsection excl
@@ -27170,8 +27162,6 @@ the environmental variable GNUPLOT_LUA_D
All arguments will be provided to the selected script for further
evaluation. E.g. 'set term lua tikz help' will cause the script itself
to print additional help on options and choices for the script.
-@end itemizeif
-
@node mf, mp, lua, complete_list_of_terminals
@subsection mf
@@ -27932,7 +27922,6 @@ terminals. It has no options."
@c ?term km-tek40xx
@cindex km-tek40xx
-@end itemizeif
@c ?commands set terminal selanar
@c ?set terminal selanar
@c ?set term selanar
@@ -27940,7 +27929,6 @@ terminals. It has no options."
@c ?term selanar
@cindex selanar
-@end itemizeif
@c ?commands set terminal sixeltek
@c ?set terminal sixeltek
@c ?set term sixeltek
@@ -27972,7 +27960,6 @@ For use with xterm, xterm must be compil
Note that gnuplot also supports another sixel output terminal, `sixelgd`,
that offers more options and features."
-@end itemizeif
@c ?commands set terminal bitgraph
@c ?set terminal bitgraph
@c ?set term bitgraph
@@ -27980,7 +27967,6 @@ that offers more options and features."
@c ?term bitgraph
@cindex bitgraph
-@end itemizeif
This family of terminal drivers supports a variety of VT-like terminals.
`tek40xx` supports Tektronix 4010 and others as well as most TEK emulators.
`vttek` supports VT-like tek40xx terminal emulators.
@@ -28517,7 +28503,6 @@ anti-aliasing, oversampling and full tra
deprecated.
The `GDI backend` which uses the classic GDI API is deprecated and has been
disabled in this version.
-@end itemizeif
`GDI+ backend` draws to the screen using the GDI+ Windows API. It supports
full antialiasing, oversampling, transparency and custom dash patterns.
@@ -28547,7 +28532,6 @@ of an additional redraw after releasing
`Line Styles...` allows customization of the line colors and styles.
-@end itemizeif
`Update wgnuplot.ini` saves the current window locations, window sizes, text
window font, text window font size, graph window font, graph window font
size, background color to the initialization file `wgnuplot.ini`.
@@ -28713,8 +28697,6 @@ This file is located in the user's appli
Line5=0 0 128 0 4
@end example
-@end itemizeif
-
@c ^ <h3>Text window options</h3>
These settings apply to the wgnuplot text-window only."
@@ -28751,7 +28733,6 @@ solid line in color mode, or a dashed li
line width is 1 pixel. If `Linestyle` is negative, it specifies the width of
a SOLID line in pixels. Line1 and any linestyle used with the `points` style
must be SOLID with unit width.
-@end itemizeif
See `graph-menu`."
@@ -29137,13 +29118,10 @@ later by `set term x11 [no]raise [no]per
`-ctrlq ` closes window on ctrl-q rather than q
@end example
-@end itemizeif
@example
`-persist` plot windows survive after main gnuplot program exits
@end example
-@end itemizeif
-
@cindex X resources
The options are shown above in their command-line syntax. When entered as

View File

@@ -0,0 +1,17 @@
---
src/command.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: src/command.c
===================================================================
--- src/command.c.orig
+++ src/command.c
@@ -2655,7 +2655,7 @@ reread_command()
#ifdef BACKWARD_COMPATIBILITY
FILE *fp;
c_token++;
- if (evaluate_inside_functionblock || multiplot || multiplot_playback)
+ if (evaluate_inside_functionblock || in_multiplot || multiplot_playback)
int_error(NO_CARET, "reread command not possible here");
fp = lf_top();
if (fp != (FILE *) NULL)

3
gnuplot-6.0.3.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ec52e3af8c4083d4538152b3f13db47f6d29929a3f6ecec5365c834e77f251ab
size 7616904

3
gnuplot-6.0.4.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:458d94769625e73d5f6232500f49cbadcb2b183380d43d2266a0f9701aeb9c5b
size 7549894

44
gnuplot-PIE.patch Normal file
View File

@@ -0,0 +1,44 @@
Index: gnuplot-6.0.4/src/Makefile.am
===================================================================
--- gnuplot-6.0.4.orig/src/Makefile.am
+++ gnuplot-6.0.4/src/Makefile.am
@@ -67,6 +67,7 @@ voxelgrid.c voxelgrid.h vplot.c vplot.h
watch.c watch.h xdg.c xdg.h
gnuplot_LDADD = $(TERMLIBS) $(TERMXLIBS) $(WX_LIBS) $(QT_LIBS)
+gnuplot_LDFLAGS = -pie
pkglibexec_PROGRAMS =
@@ -75,6 +76,7 @@ pkglibexec_PROGRAMS += gnuplot_x11
gnuplot_x11_SOURCES = gplt_x11.c gplt_x11.h gpexecute.c gpexecute.h mousecmn.h version.c version.h
XLIBS = @LIBRARIES_FOR_X@
gnuplot_x11_LDADD = getcolor_x11.o $(XLIBS)
+gnuplot_x11_LDFLAGS = -pie
endif
getcolor_x11.o: getcolor.c
@@ -101,6 +103,7 @@ $(EXTRA_gnuplot_SOURCES)
if BUILD_WXWIDGETS
gnuplot_SOURCES += wxterminal/wxt_gui.cpp
+gnuplot_LDFLAGS += -pie
endif
if BUILD_GPCAIRO
@@ -188,6 +191,7 @@ qtterminal/QtGnuplotApplication.cpp qtte
qtterminal/QtGnuplotScene.cpp qtterminal/QtGnuplotItems.cpp \
qtterminal/QtGnuplotEvent.cpp
gnuplot_qt_LDADD = $(QT_LIBS)
+gnuplot_qt_LDFLAGS = -pie
#
# embedded Qt widget example program
@@ -203,6 +207,7 @@ qt_embed_example_SOURCES = qtterminal/qt
qtterminal/QtGnuplotScene.cpp qtterminal/QtGnuplotItems.cpp \
qtterminal/QtGnuplotInstance.cpp
qt_embed_example_LDADD = $(QT_LIBS)
+qt_embed_example_LDFLAGS = -pie
endif # build_qt

18
gnuplot-QtCore-PIC.dif Normal file
View File

@@ -0,0 +1,18 @@
Since QtCore is build with -reduce-relocations a -fPIC is required
---
src/Makefile.am | 3 +++
1 file changed, 3 insertions(+)
--- src/Makefile.am
+++ src/Makefile.am 2017-09-27 10:07:07.767840550 +0000
@@ -172,6 +172,9 @@ clean-local: clean-qt-extra clean-demo
gnuplot_SOURCES += qtterminal/qt_term.cpp
+qtterminal/%.$(OBJEXT): qtterminal/%.cpp
+ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -fPIC -c -o $@ $<
+
pkglibexec_PROGRAMS += gnuplot_qt
$(gnuplot_qt_OBJECTS) : ui_QtGnuplotSettings.h

2125
gnuplot-doc.changes Normal file

File diff suppressed because it is too large Load Diff

19
gnuplot-doc2tex.patch Normal file
View File

@@ -0,0 +1,19 @@
Do not scan more characters we actual have.
---
docs/doc2tex.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- docs/doc2tex.c
+++ docs/doc2tex.c 2024-06-03 07:11:02.870049141 +0000
@@ -553,8 +553,9 @@ puttex( char *str, FILE *file)
(void) fputs("}", file);
inquote = FALSE;
} else {
+ size_t lmax = strlen(str);
(void) fputs("{\\bf ", file);
- for (i=0; i<MAX_LINE_LEN && ((c=str[i]) != '`') ; i++){
+ for (i=0; i<lmax && ((c=str[i]) != '`') ; i++){
string[i] = c;
}
string[i] = NUL;

BIN
gnuplot-fr.doc.bz2 LFS Normal file

Binary file not shown.

20
gnuplot-wx3.diff Normal file
View File

@@ -0,0 +1,20 @@
From: Jan Engelhardt <jengelh@inai.de>
Date: 2015-03-22 15:21:46.000000000 +0100
gnuplot's wxt_gui.cpp (*not* wxWidgets) uses XInitThreads, but
the program does not link in X11 and runs into a build error
otherwise.
---
gnuplot-5.2.0/src/Makefile.am | 1 +
1 file changed, 1 insertion(+)
--- gnuplot-5.2.0/src/Makefile.am
+++ gnuplot-5.2.0/src/Makefile.am 2017-09-27 10:06:44.716255786 +0000
@@ -101,6 +101,7 @@ $(EXTRA_gnuplot_SOURCES)
if BUILD_WXWIDGETS
gnuplot_SOURCES += wxterminal/wxt_gui.cpp
+gnuplot_LDADD += -lX11
endif
if BUILD_GPCAIRO

2125
gnuplot.changes Normal file

File diff suppressed because it is too large Load Diff

323
gnuplot.spec Normal file
View File

@@ -0,0 +1,323 @@
#
# spec file for package gnuplot
#
# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
#################################################################
### Please call "./pre_checkin.sh" prior to submitting. ###
### (This will regenerate gnuplot-doc.changes) ###
#################################################################
%global flavor @BUILD_FLAVOR@%{nil}
%global sname gnuplot
%if "%{flavor}" == ""
%else
%global psuffix -%{flavor}
%endif
Name: gnuplot%{?psuffix}
BuildRequires: ImageMagick
BuildRequires: automake
BuildRequires: cairo-devel
BuildRequires: fdupes
%if 0%{?suse_version} == 1500
BuildRequires: gcc13-PIE
BuildRequires: gcc13-c++
%else
BuildRequires: gcc-c++
%endif
BuildRequires: glib2-devel
BuildRequires: lua-devel
BuildRequires: netpbm
BuildRequires: qt6-linguist-devel
%if 0%{?is_opensuse}
BuildRequires: openspecfun-devel
%endif
BuildRequires: pango-devel
BuildRequires: plotutils-devel
BuildRequires: readline-devel
BuildRequires: wxGTK3-devel >= 3
BuildRequires: zziplib
BuildRequires: pkgconfig(Qt6Core)
BuildRequires: pkgconfig(Qt6Core5Compat)
BuildRequires: pkgconfig(Qt6Gui)
BuildRequires: pkgconfig(Qt6Network)
BuildRequires: pkgconfig(Qt6PrintSupport)
BuildRequires: pkgconfig(Qt6Svg)
BuildRequires: pkgconfig(caca)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(gdlib)
BuildRequires: pkgconfig(libcerf)
BuildRequires: pkgconfig(libjpeg)
BuildRequires: pkgconfig(libpng16)
BuildRequires: pkgconfig(x11)
%if "%{flavor}" == "doc"
BuildRequires: emacs-nox
BuildRequires: gnuplot
BuildRequires: latex2html
BuildRequires: makeinfo
BuildRequires: texlive-epstopdf
BuildRequires: texlive-gnu-freefont
BuildRequires: texlive-latex
BuildRequires: texlive-latexconfig
BuildRequires: texlive-luatex
BuildRequires: texlive-makeindex
BuildRequires: texlive-pdftex
BuildRequires: texlive-tex
BuildRequires: texlive-tex4ht
BuildRequires: texlive-texinfo
BuildRequires: texlive-ucs
BuildRequires: tex(booktabs.sty)
BuildRequires: tex(fancyhdr.sty)
BuildRequires: tex(gttn1000.tfm)
BuildRequires: tex(hyperref.sty)
BuildRequires: tex(imakeidx.sty)
BuildRequires: tex(lgrcmr.fd)
BuildRequires: tex(nicefrac.sty)
BuildRequires: tex(pdftex.def)
BuildRequires: tex(subfigure.sty)
BuildRequires: tex(textgreek.sty)
BuildRequires: tex(unicode-math.sty)
BuildRequires: tex(upquote.sty)
%endif
URL: https://www.gnuplot.info/
Version: 6.0.4
Release: 0
%if "%{flavor}" == ""
Summary: Function Plotting Utility and more
License: GPL-2.0-or-later AND SUSE-Gnuplot
Group: Documentation/Other
%else
Summary: Documentation of GNUplot
License: GPL-2.0-or-later AND SUSE-Gnuplot
Group: Documentation/Other
%endif
Source0: https://downloads.sourceforge.net/project/gnuplot/gnuplot/%{version}/gnuplot-%{version}.tar.gz
Source1: README.whynot
Source2: webp_figures.gnu
# https://mirrors.ctan.org/macros/latex209/contrib/picins/picins.sty
# That's a build requirement, not provided by Tex Live
Source3: picins.sty
# Repair broken texi(nfo) file
Source4: gnuplot-5.2.0-texi2info.patch
Patch0: gnuplot-4.6.0.dif
Patch1: gnuplot-4.4.0-x11ovf.dif
Patch2: gnuplot-4.6.0-fonts.diff
Patch3: gnuplot-doc2tex.patch
Patch4: gnuplot-4.6.0-demo.diff
Patch5: gnuplot-QtCore-PIC.dif
Patch6: gnuplot-PIE.patch
Patch7: gnuplot-6.0.3-backward_compat.patch
%define _x11lib %{_libdir}
%define _x11data %{_datadir}/X11
%define _x11inc %{_includedir}/X11
%define _appdef %{_x11data}/app-defaults
%define _gnplttex tex/latex/gnuplot
%if "%{flavor}" == "doc"
Requires: %{sname}
Requires(post): %install_info_prereq
Requires(preun): %install_info_prereq
BuildArch: noarch
%endif
%description
GNUplot is a command line driven interactive function plotting utility.
GNUplot supports many different types of terminals, plotters, and
printers (including many color devices and pseudodevices like LaTeX)
and can easily be extended to include new devices.
%if "%{flavor}" == "doc"
%{sname} documentation files including the info pages.
%endif
%prep
%setup -q -n %{sname}-%{version}
cp %{_sourcedir}/picins.sty docs
%patch -P2 -p0 -b .font
%patch -P3 -p0 -b .overscan
%patch -P4 -p0 -b .demo
%patch -P0 -p1 -b .0
%patch -P1 -p0 -b .x11ovf
%patch -P5 -p0 -b .pic
%patch -P6 -p1 -b .pie
%patch -P7 -p0 -b .multiplot
%build
autoreconf -fi
# The generation of the PDFs fails otherwise
export PDFLATEX=lualatex
export CPPFLAGS="-I%{_includedir}/gd -DAppDefDir=\\\"%{_appdef}\\\""
export CPPFLAGS="$CPPFLAGS -DGNUPLOT_LIB_DEFAULT=\\\"%{_docdir}/%{sname}/demo\\\""
export CFLAGS="${RPM_OPT_FLAGS} -pipe -D_GNU_SOURCE -fpic"
export CXXFLAGS="$CFLAGS -fno-strict-aliasing"
export LDFLAGS="-L%{_x11lib} -Wl,--as-needed"
export ARCHLIB=%_lib
%if 0%{?suse_version}
%if !0%{?sle_version}
export CFLAGS="$CFLAGS -DDIST_CONTACT='https://bugs.opensuse.org/'"
%else
export CFLAGS="$CFLAGS -DDIST_CONTACT='https://bugzilla.suse.com/'"
%endif
%endif
%if 0%{?suse_version} == 1500
export CC=gcc-13
export CXX=g++-13
%endif
%if "%{flavor}" == ""
mkdir bin
# Fake the existence of build dependencies only required in the doc package
# to make configure pass without errors
ln -sf /bin/true bin/dvips
ln -sf /bin/true bin/emacs
ln -sf /bin/true bin/kpsewhich
ln -sf /bin/true bin/texhash
PATH=${PATH}:${PWD}/bin
%endif
%configure \
--with-x \
--x-includes=%{_x11inc} \
--x-libraries=%{_x11lib}\
--with-x-app-defaultdir=%{_appdef}\
--with-texdir=%{_datadir}/texmf/%{_gnplttex} \
--with-kpsexpand=%{_bindir}/kpsexpand \
%if "%{flavor}" == "doc"
--with-latex=yes \
%else
--with-latex=force \
%endif
--with-readline=gnu \
--enable-history-file \
--with-bitmap-terminals \
--with-gpic \
--with-mif \
--enable-x11-mbfonts \
--enable-stats \
--enable-stable-sort \
--enable-polar-grid \
--enable-watchpoints \
--enable-function-blocks \
--enable-backward-compatibility \
--with-gd=yes \
--with-caca \
--with-tgif \
--with-metafont \
--with-metapost \
--with-regis \
--with-amos=%{_libdir} \
--with-qt=qt6
%if "%{flavor}" == ""
make %{?_smp_mflags} UIC=%{_qt6_libexecdir}/uic MOC=%{_qt6_libexecdir}/moc RCC=%{_qt6_libexecdir}/rcc LRELEASE=/usr/bin/lrelease6
%endif
%if "%{flavor}" == "doc"
mv src/Makefile{,_INACESSIBLE}
pushd docs/
cp -p %{S:2} webp_figures.gnu
make GNUPLOT_EXE=%{_bindir}/gnuplot srcdir=. clean
make GNUPLOT_EXE=%{_bindir}/gnuplot srcdir=. allterm.h allterm-ja.h
make GNUPLOT_EXE=%{_bindir}/gnuplot srcdir=. html pdf
make srcdir=. gnuplot.texi
patch -p0 < %{S:4}
make srcdir=. info
pushd psdoc/
make srcdir=. pdf
popd
popd
if test -d tutorial/
then
pushd tutorial/
make srcdir=. clean pdf
popd
fi
%endif
%install
rm -rf %{buildroot}
%if "%{flavor}" == ""
make DESTDIR=%{buildroot} appdefaultdir=%{_appdef} install
mkdir -p %{buildroot}/%{_mandir}/ja/man1
install -m 0644 man/ja/man1/gnuplot.1 %{buildroot}/%{_mandir}/ja/man1/gnuplot.1
%endif
%if "%{flavor}" == "doc"
mkdir -p %{buildroot}/%{_infodir}
mkdir -p %{buildroot}/%{_docdir}/gnuplot/doc
mkdir -p %{buildroot}/%{_docdir}/gnuplot/doc/html
mkdir -p %{buildroot}/%{_docdir}/gnuplot/demo
rm -vf docs/htmldocs/images.{aux,idx,log,out,tex}
rm -vf docs/htmldocs/*.pl
rm -vf docs/htmldocs/*.aux
rm -vf docs/htmldocs/*.sty
rm -vf docs/htmldocs/WARNINGS
rm -vf docs/htmldocs/VERSION
rm -vf docs/figure_*.pdf
rm -vf tutorial/eg7.pdf
rm -rvf demo/html
install -m 0444 docs/*.info* %{buildroot}/%{_infodir}/
install -m 0444 docs/gnuplot.pdf %{buildroot}/%{_docdir}/gnuplot/
install -m 0444 docs/html/* %{buildroot}/%{_docdir}/gnuplot/doc/html
install -m 0444 docs/psdoc/*.pdf %{buildroot}/%{_docdir}/gnuplot/doc/
install -m 0444 docs/psdoc/*.ps %{buildroot}/%{_docdir}/gnuplot/doc/
install -m 0444 docs/psdoc/*.gpi %{buildroot}/%{_docdir}/gnuplot/doc/
install -m 0444 docs/psdoc/*.doc %{buildroot}/%{_docdir}/gnuplot/doc/
install -m 0444 docs/psdoc/README %{buildroot}/%{_docdir}/gnuplot/doc/
install -m 0444 demo/*.* %{buildroot}/%{_docdir}/gnuplot/demo/
install -m 0444 README* %{buildroot}/%{_docdir}/gnuplot/
install -m 0444 NEWS BUGS %{buildroot}/%{_docdir}/gnuplot/
install -m 0444 %{S:1} %{buildroot}/%{_docdir}/gnuplot/
rm -f %{buildroot}/%{_docdir}/gnuplot/demo/Makefile*
%fdupes %{buildroot}/%{_docdir}
%endif
%if "%{flavor}" == ""
%check
GNUTERM=dumb make check
%endif
%if "%{flavor}" == "doc"
%post
%install_info --info-dir=.%{_infodir} .%{_infodir}/%{sname}.info.gz
%preun
%install_info_delete --info-dir=.%{_infodir} .%{_infodir}/%{sname}.info.gz
%endif
%if "%{flavor}" == ""
%files
%license Copyright
%{_bindir}/gnuplot
%{_libexecdir}/gnuplot
%{_datadir}/gnuplot
%dir %{_datadir}/texmf
%{_datadir}/texmf/*
%dir %{_appdef}
%{_appdef}/Gnuplot
%doc %{_mandir}/man1/gnuplot.1.gz
%doc %{_mandir}/ja/man1/gnuplot.1.gz
%endif
%if "%{flavor}" == "doc"
%files
%{_docdir}/gnuplot/
%{_infodir}/%{sname}.info.gz
%endif
%changelog

24
gnuplot.test Normal file
View File

@@ -0,0 +1,24 @@
Testform für GNUPLPOT
=====================
27.04.2004: Version 4.0.0
Maintainer: werner
Vorraussetzungen:
=================
X muss installiert sein.
Starten:
========
gnuplot aufrufen ... Doku lesen.
Ergebinsse:
===========
Plots ... bei falscher Anwendung kann das Programm
abschmieren. Bei richtiger Verwendung der Syntax
von gnuplot ist es allerdings ein mächtiges Programm.

578
picins.sty Normal file
View File

@@ -0,0 +1,578 @@
% PICINS.STY --- Style File zum Einbinden von Bildern
% Autor: J. Bleser, E. Lang
% Hochschulrechenzentrum
% Technische Hochschule Darmstadt
% !!! Dieses Style-File ist urheberrechtlich geschuetzt !!!
% !!! Aenderungen nur mit Zustimmung der Autoren !!!
\message{Option `picins' Version 3.0 Sep. 1992, TH Darmstadt/HRZ}
\newbox\@BILD%
\newbox\@TEXT%
\newdimen\d@breite%
\newdimen\d@hoehe%
\newdimen\d@xoff%
\newdimen\d@yoff%
\newdimen\d@shad%
\newdimen\d@dash%
\newdimen\d@boxl%
\newdimen\d@pichskip%
\newdimen\d@tmp
\newdimen\d@tmpa
\newdimen\d@bskip
\newdimen\hsiz@%
\newdimen\p@getot@l%
\newcount\c@breite
\newcount\c@hoehe
\newcount\c@xoff
\newcount\c@yoff
\newcount\c@pos
\newcount\c@shad
\newcount\c@dash
\newcount\c@boxl
\newcount\c@zeilen%
\newcount\@changemode%
\newcount\c@piccaption%
\newcount\c@piccaptionpos%
\newcount\c@picpos
\newcount\c@whole%
\newcount\c@half%
\newcount\c@tmp
\newcount\c@tmpa
\newcount\c@tmpb
\newcount\c@tmpc
\newcount\c@tmpd
\newskip\d@leftskip
\newif\if@list \@listfalse%
\newif\if@offset%
\c@piccaptionpos=1%
\c@picpos=0
\d@shad=4pt%
\d@dash=4pt%
\d@boxl=10pt%
\d@pichskip=1em%
\@changemode=0%
\def\@captype{figure}%
\let\old@par=\par%
\def\pichskip#1{\d@pichskip #1\relax}
\def\shadowthickness#1{\d@shad #1\relax}
\def\dashlength#1{\d@dash #1\relax}
\def\boxlength#1{\d@boxl #1\relax}
\def\picchangemode{\@changemode=1}%
\def\nopicchangemode{\@changemode=0}%
\def\piccaptionoutside{\c@piccaptionpos=1}%
\def\piccaptioninside{\c@piccaptionpos=2}%
\def\piccaptionside{\c@piccaptionpos=3}%
\def\piccaptiontopside{\c@piccaptionpos=4}%
\def\piccaption{\@ifnextchar [{\@piccaption}{\@piccaption[]}}
\def\@piccaption[#1]#2{\c@piccaption=1\def\sh@rtf@rm{#1}\def\capti@nt@xt{#2}}
\def\make@piccaption{%
\hsiz@\d@breite%
\ifnum\c@piccaptionpos=2%
\advance\hsiz@ -2\fboxsep%
\fi%
\ifnum\c@piccaptionpos>2%
\hsiz@\hsize\advance\hsiz@-\d@breite\advance\hsiz@-\d@pichskip%
\fi%
\setbox\@TEXT=\vbox{\hsize\hsiz@\caption[\sh@rtf@rm]{\capti@nt@xt}}%
}
\def\newcaption{\refstepcounter\@captype\@dblarg{\@newcaption\@captype}}
\long\def\@newcaption#1[#2]#3{%
\old@par%
\addcontentsline{\csname ext@#1\endcsname }{#1}%
{\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}
\begingroup\@parboxrestore\normalsize%
\@newmakecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\old@par%
\endgroup%
}
\long\def\@newmakecaption#1#2{%
\vskip 10pt%
\setbox\@tempboxa \hbox {#1: #2}%
\ifdim \wd\@tempboxa >\hsize%
\setbox0=\hbox{#1: }\dimen0=\hsize\advance\dimen0 by-\wd0
\setbox1=\vtop{\hsize=\dimen0 #2}
\hbox{\box0 \box1}
\par
\else \hbox to\hsize {\hfil \box \@tempboxa \hfil}
\fi
}
\def\parpic{%
\@ifnextchar ({\iparpic}{\iparpic(0pt,0pt)}
}
\def\iparpic(#1,#2){%
\@ifnextchar ({\@offsettrue\iiparpic(#1,#2)}%
{\@offsetfalse\iiparpic(#1,#2)(0pt,0pt)}
}
\def\iiparpic(#1,#2)(#3,#4){%
\@ifnextchar [{\iiiparpic(#1,#2)(#3,#4)}{\iiiparpic(#1,#2)(#3,#4)[l]}
}
\def\iiiparpic(#1,#2)(#3,#4)[#5]{%
\@ifnextchar [{\ivparpic(#1,#2)(#3,#4)[#5]}{\ivparpic(#1,#2)(#3,#4)[#5][]}
}
\def\ivparpic(#1,#2)(#3,#4)[#5][#6]#7{%
\let\par=\old@par\par%
\hangindent0pt\hangafter1%
\setbox\@BILD=\hbox{#7}%
\d@breite=#1\d@breite=\the\d@breite%
\ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi%
\c@breite=\d@breite\divide\c@breite by65536%
\multiply\c@piccaption\c@piccaptionpos%
\d@hoehe=#2\d@hoehe=\the\d@hoehe%
\ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi%
\c@hoehe=\d@hoehe\divide\c@hoehe by65536%
\d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536%
\d@yoff=\d@hoehe%
\advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536%
\c@pos=1\unitlength1pt%
\if@offset%
\setbox\@BILD=\hbox{%
\begin{picture}(\c@breite,\c@hoehe)%
\put(0,0){\makebox(\c@breite,\c@hoehe){}}%
\put(\c@xoff,\c@yoff){\box\@BILD}%
\end{picture}%
}%
\else%
\setbox\@BILD=\hbox{%
\begin{picture}(\c@breite,\c@hoehe)%
\put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}%
\end{picture}%
}%
\fi%
\ifnum\c@piccaption=2%
\make@piccaption%
\advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT%
\c@hoehe=\d@hoehe\divide\c@hoehe by65536%
\setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}%
\hbox{\hspace{\fboxsep}\box\@TEXT}%
\vspace{4pt}}%
\fi%
\@tfor\@tempa := #5\do{%
\if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi%
\if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi%
\if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi%
\if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi%
\if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi%
\if\@tempa l\c@pos=1\fi%
\if\@tempa r\c@pos=2\fi%
}%
\ifnum\c@piccaption=1%
\make@piccaption%
\advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT%
\c@hoehe=\d@hoehe\divide\c@hoehe by65536%
\setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}\hbox{\box\@TEXT}\vspace{4pt}}%
\fi%
\ifodd\count0\c@picpos=0\else\c@picpos=\@changemode\fi%
\pagetotal=\the\pagetotal%
\d@tmp=\pagegoal\advance\d@tmp by-\pagetotal\advance\d@tmp by-\baselineskip%
\ifdim\d@hoehe>\d@tmp%
\vskip 0pt plus\d@hoehe\relax\pagebreak[3]\vskip 0pt plus-\d@hoehe\relax%
\ifnum\c@picpos=1\c@picpos=0\else\c@picpos=\@changemode\fi%
\fi%
\ifnum\c@picpos=1\ifnum\c@pos=1\c@pos=2\else\c@pos=1\fi\fi%
\ifnum\@listdepth>0
\@listtrue\parshape 0%
\advance\hsize -\rightmargin%
\d@leftskip \leftskip%
\leftskip \@totalleftmargin%
\if@inlabel\rule{\linewidth}{0pt}\vskip-\baselineskip\relax\fi%
\else\@listfalse\medskip%
\fi%
\if@list\d@tmpa=\linewidth\else\d@tmpa=\hsize\fi%
\ifnum\c@piccaption=3%
\make@piccaption%
\d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT%
\ifdim\d@hoehe>\d@tmp%
\setbox\@TEXT=\vbox to\d@hoehe{\vfill\box\@TEXT\vspace{.2\baselineskip}\vfill}%
\else%
\setbox\@BILD=\vbox to\d@tmp{\vfill\box\@BILD\vfill}%
\d@hoehe\d@tmp%
\fi%
\fi%
\ifnum\c@piccaption=4%
\make@piccaption%
\d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT%
\setbox\@TEXT=\vbox to\d@hoehe{\vspace{-10pt}\box\@TEXT\vfil}%
\advance\d@hoehe-\d@tmp%
\fi%
\ifnum\c@pos=1\d@tmpa=0pt%
\ifnum\c@piccaption>2%
\setbox\@BILD=\hbox{\box\@BILD\hspace{\d@pichskip}\hbox{\box\@TEXT}}%
\fi%
\else\advance\d@tmpa by-\wd\@BILD\d@breite=-\d@breite%
\ifnum\c@piccaption>2%
\d@tmpa=0pt%
\setbox\@BILD=\hbox{\hbox{\box\@TEXT}\hspace{\d@pichskip}\box\@BILD}%
\fi%
\fi%
\p@getot@l\the\pagetotal%
\d@bskip\d@hoehe\advance\d@bskip by\parskip\advance\d@bskip by.3\baselineskip%
{\noindent\hspace*{\d@tmpa}\relax%
\box\@BILD\nopagebreak\vskip-\d@bskip\relax\nopagebreak}%
\d@tmp=-\d@hoehe\divide\d@tmp by\baselineskip%
\c@zeilen=\d@tmp\advance\c@zeilen by-1%
\ifdim\d@breite<0pt\advance\d@breite by-\d@pichskip%
\else\advance\d@breite by\d@pichskip%
\fi%
\hangindent=\d@breite%
\hangafter=\c@zeilen%
\let\par=\x@par%
\ifnum\c@piccaption=3%
\hangindent0pt\hangafter1\let\par=\old@par%
\vskip\d@hoehe\vskip.2\baselineskip%
\fi%
\c@piccaption=0%
}
\newdimen\ptoti
\newdimen\ptotii
\def\x@par{%
\ptoti\pagetotal%
\old@par%
\ptotii\pagetotal%
\ifdim\ptoti=\ptotii%
\d@tmp\d@hoehe%
\else%
\d@tmp\baselineskip%
\multiply\d@tmp by\prevgraf%
\advance\d@tmp by\parskip%
\global\advance\d@hoehe by-\d@tmp\d@tmp=\d@hoehe%
\fi%
\ifdim\d@hoehe>0pt%
\divide\d@tmp by\baselineskip\c@zeilen=-\d@tmp\advance\c@zeilen by-1%
\c@zeilen=\the\c@zeilen%
\else\c@zeilen=0
\fi
\ifnum\c@zeilen<0\hangafter=\c@zeilen\hangindent=\d@breite%
\else\let\par=\old@par%
\hangindent 0pt%
\leftskip \d@leftskip%
\if@list\parshape \@ne \@totalleftmargin \linewidth%
\advance\hsize \rightmargin%
\fi%
\fi%
}
\def\picskip#1{%
\let\par=\old@par%
\par%
\pagetotal\the\pagetotal%
\c@tmp=#1\relax%
\ifnum\c@tmp=0%
\d@tmp\baselineskip\multiply\d@tmp by\prevgraf\advance\d@tmp\parskip%
\ifdim\p@getot@l<\pagetotal
\advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex%
\ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi%
\fi%
\ifdim\p@getot@l=\pagetotal%
\advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex%
\ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi%
\fi%
\else\hangafter=-\c@tmp\hangindent=\d@breite%
\fi%
\leftskip \d@leftskip%
\if@list\parshape \@ne \@totalleftmargin \linewidth%
\advance\hsize \rightmargin%
\fi%
}
\def\hpic{%
\@ifnextchar ({\ihpic}{\ihpic(0pt,0pt)}
}
\def\ihpic(#1,#2){%
\@ifnextchar ({\@offsettrue\iihpic(#1,#2)}%
{\@offsetfalse\iihpic(#1,#2)(0pt,0pt)}
}
\def\iihpic(#1,#2)(#3,#4){%
\@ifnextchar [{\iiihpic(#1,#2)(#3,#4)}{\iiihpic(#1,#2)(#3,#4)[l]}
}
\def\iiihpic(#1,#2)(#3,#4)[#5]{%
\@ifnextchar [{\ivhpic(#1,#2)(#3,#4)[#5]}{\ivhpic(#1,#2)(#3,#4)[#5][]}
}
\def\ivhpic(#1,#2)(#3,#4)[#5][#6]#7{%
\setbox\@BILD=\hbox{#7}%
\d@breite=#1\d@breite=\the\d@breite%
\ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi%
\c@breite=\d@breite\divide\c@breite by65536%
\d@hoehe=#2\d@hoehe=\the\d@hoehe%
\ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi%
\c@hoehe=\d@hoehe\divide\c@hoehe by65536%
\d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536%
\d@yoff=\d@hoehe%
\advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536%
\c@pos=0\d@tmpa=\parindent\parindent=0pt\unitlength1pt%
\if@offset
\setbox\@BILD=\hbox{%
\begin{picture}(\c@breite,\c@hoehe)%
\put(0,0){\makebox(\c@breite,\c@hoehe){}}%
\put(\c@xoff,\c@yoff){\box\@BILD}%
\end{picture}%
}%
\else%
\setbox\@BILD=\hbox{%
\begin{picture}(\c@breite,\c@hoehe)%
\put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}%
\end{picture}%
}%
\fi%
\@tfor\@tempa := #5\do{%
\if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi%
\if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi%
\if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi%
\if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi%
\if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi%
\if\@tempa t\c@pos=1\fi%
\if\@tempa b\c@pos=2\fi%
}%
\ifnum\c@pos=0\parbox{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi%
\ifnum\c@pos=1\parbox[t]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi%
\ifnum\c@pos=2\parbox[b]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi%
\parindent=\d@tmpa%
}
\def\Rahmen(#1,#2)#3{%
\c@whole=\@wholewidth\divide\c@whole by65536%
\c@half=\@halfwidth\divide\c@half by65536%
\c@tmpa=#1\advance\c@tmpa by\c@whole\advance\c@tmpa by\c@whole%
\c@tmpb=#2\advance\c@tmpb by\c@whole\advance\c@tmpb by\c@whole%
\begin{picture}(\c@tmpa,\c@tmpb)%
\put(\c@whole,\c@half){\framebox(#1,#2){#3}}%
\end{picture}%
\global\advance\d@breite by2\@wholewidth%
\global\advance\d@hoehe by2\@wholewidth%
}
\def\Schatten(#1,#2)#3{%
\c@whole=\@wholewidth\divide\c@whole by65536%
\c@half=\@halfwidth\divide\c@half by65536%
\c@shad=\d@shad\divide\c@shad by65536%
\c@tmp=\c@whole\advance\c@tmp by\c@whole\c@tmpd=\c@tmp%
\advance\c@tmp by\c@shad%
\advance\c@tmpd by#1%
\advance\c@half by\c@shad%
\c@tmpa=#1\advance\c@tmpa by\c@tmp%
\c@tmpb=#2\advance\c@tmpb by\c@tmp%
\begin{picture}(\c@tmpa,\c@tmpb)%
\put(\c@whole,\c@half){\framebox(#1,#2){#3}}%
\put(\c@shad,0){\rule{\c@tmpd pt}{\c@shad pt}}%
\put(\c@tmpd,0){\rule{\c@shad pt}{#2 pt}}%
\end{picture}%
\global\advance\d@breite by2\@wholewidth\global\advance\d@breite by\d@shad%
\global\advance\d@hoehe by2\@wholewidth\global\advance\d@hoehe by\d@shad%
}
\def\Oval(#1,#2)#3{%
\@wholewidth=0.4pt%
\c@tmpa=\the#1\divide\c@tmpa by2%
\c@tmpb=\the#2\divide\c@tmpb by2%
\begin{picture}(#1,#2)%
\put(\c@tmpa,\c@tmpb){\oval(#1,#2)}%
\put(0.4,0.4){#3}%
\end{picture}%
\global\advance\d@breite by1pt\global\advance\d@hoehe by1pt%
}
\def\Strich(#1,#2)#3{%
\c@whole=\@wholewidth\divide\c@whole by65536%
\c@half=\@halfwidth\divide\c@half by65536%
\c@dash=\d@dash\divide\c@dash by65536%
\c@tmp=\c@whole\advance\c@tmp by\c@whole%
\c@tmpa=#1\advance\c@tmpa by\c@tmp%
\c@tmpb=#2\advance\c@tmpb by\c@tmp%
\c@tmpc=#1\advance\c@tmpc by\c@whole%
\c@tmpd=#2\advance\c@tmpd by\c@whole%
\begin{picture}(\c@tmpa,\c@tmpb)%
\put(\c@half,\c@half){\dashbox{\c@dash}(\c@tmpc,\c@tmpd){#3}}%
\end{picture}%
\global\advance\d@breite by2\@wholewidth%
\global\advance\d@hoehe by2\@wholewidth%
}
\def\Kasten(#1,#2)#3{%
\@wholewidth=0.4pt%
\c@boxl=\d@boxl\divide\c@boxl by65536\c@boxl=\the\c@boxl%
\c@tmpa=#1\advance\c@tmpa by\c@boxl%
\c@tmpb=#2\advance\c@tmpb by\c@boxl%
\c@tmp=#2%
\begin{picture}(\c@tmpa,\c@tmpb)%
\put(0,\c@boxl){\framebox(#1,#2){#3}}%
\put(\c@boxl,0){\line(-1,1){\c@boxl}}%
\put(\c@boxl,0){\line(1,0){#1}\line(-1,1){\c@boxl}}%
\put(\c@boxl,0){\put(#1,0){\line(0,1){\c@tmp}%
\put(0,\c@tmp){\line(-1,1){\c@boxl}}}}%
\end{picture}%
\global\advance\d@breite by\d@boxl%
\global\advance\d@hoehe by\d@boxl%
}
\newbox\env@box%
\newdimen\d@envdp
\newcount\c@hsize
\newcount\c@envdp
\newdimen\d@envb
\long\def\frameenv{\@ifnextchar [{\@frameenv}{\@frameenv[\textwidth]}}
\long\def\@frameenv[#1]{%
\hsiz@=\textwidth \textwidth=#1 \d@envb=#1
\advance\textwidth by-2\@wholewidth
\advance\textwidth by-2\fboxsep
\hsize=\textwidth \linewidth=\textwidth
\setbox\env@box=\vbox\bgroup}%
\def\endframeenv{%
\egroup%
\hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@
\c@breite=\d@envb \divide\c@breite by65536
\advance\d@envb by-2\@wholewidth
\c@hsize=\d@envb \divide\c@hsize by65536%
\d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box%
\advance\d@envdp by2\fboxsep%
\d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth
\c@hoehe=\d@hoehe \divide\c@hoehe by65536
\c@envdp=\d@envdp \divide\c@envdp by65536%
\c@tmp=\@wholewidth \divide\c@tmp by65536
\vskip\@wholewidth%
\unitlength 1pt\noindent%
\begin{picture}(\c@breite,\c@hoehe)(0,0)
\put(\c@tmp,\c@tmp){\framebox(\c@hsize,\c@envdp){\box\env@box}}
\end{picture}%
}
\long\def\shadowenv{\@ifnextchar [{\@shadowenv}{\@shadowenv[\textwidth]}}
\long\def\@shadowenv[#1]{%
\hsiz@=\textwidth \textwidth=#1 \d@envb=#1
\advance\textwidth by-2\@wholewidth
\advance\textwidth by-2\fboxsep
\advance\textwidth by-\d@shad%
\hsize=\textwidth \linewidth=\textwidth
\setbox\env@box=\vbox\bgroup}%
\def\endshadowenv{%
\egroup
\hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@
\d@tmpa=\d@envb
\c@breite=\d@envb \divide\c@breite by65536
\advance\d@envb by-2\@wholewidth \advance\d@envb by-\d@shad
\c@hsize=\d@envb \divide\c@hsize by65536%
\d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box%
\advance\d@envdp by2\fboxsep%
\c@envdp=\d@envdp \divide\c@envdp by65536%
\d@hoehe=\d@envdp
\advance\d@hoehe by2\@wholewidth \advance\d@hoehe by\d@shad
\c@hoehe=\d@hoehe \divide\c@hoehe by65536
\c@shad =\d@shad \divide\c@shad by65536
\c@tmp=\@wholewidth \divide\c@tmp by65536
\advance\d@tmpa by-2\d@shad
\c@xoff =\d@tmpa \divide\c@xoff by65536
\advance\c@xoff by\c@shad \advance\c@xoff by-1
\advance\d@envdp by\@wholewidth
\vskip\@halfwidth
\unitlength 1pt\noindent%
\begin{picture}(\c@breite,\c@hoehe)(0,0)
\put(\c@tmp,\c@shad){\framebox(\c@hsize,\c@envdp){\box\env@box}}
\put(\c@shad,0){\rule{\d@tmpa}{\d@shad}}%
\put(\c@xoff,0){\rule{\d@shad}{\d@envdp}}%
\end{picture}%
\vskip\@halfwidth
}
\long\def\dashenv{\@ifnextchar [{\@dashenv}{\@dashenv[\textwidth]}}
\long\def\@dashenv[#1]{%
\hsiz@=\textwidth \textwidth=#1 \d@envb=#1
\advance\textwidth by-2\@wholewidth \advance\textwidth by-2\fboxsep
\hsize=\textwidth \linewidth=\textwidth
\setbox\env@box=\vbox\bgroup}%
\long\def\enddashenv{%
\egroup
\hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@
\c@breite=\d@envb \divide\c@breite by65536
\advance\d@envb by-\@wholewidth
\c@hsize=\d@envb \divide\c@hsize by65536%
\d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box%
\advance\d@envdp by2\fboxsep%
\advance\d@envdp by\@wholewidth
\d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth
\c@hoehe=\d@hoehe \divide\c@hoehe by65536
\c@envdp=\d@envdp \divide\c@envdp by65536%
\c@dash=\d@dash \divide\c@dash by65536%
\c@whole=\@wholewidth \divide\c@whole by65536
\c@half=\@halfwidth \divide\c@half by 65536
\noindent\unitlength 1pt
\begin{picture}(\c@breite,\c@hoehe)(0,0)
\put(\c@half,\c@whole){\dashbox{\c@dash}(\c@hsize,\c@envdp){\box\env@box}}
\end{picture}%
}
\long\def\ovalenv{\@ifnextchar [{\@ovalenv}{\@ovalenv[\textwidth]}}%
\long\def\@ovalenv[#1]{%
\hsiz@=\textwidth \textwidth=#1 \d@envb=#1
\advance\textwidth by-4\fboxsep
\hsize=\textwidth \linewidth=\textwidth
\setbox\env@box=\vbox\bgroup}%
\long\def\endovalenv{%
\egroup
\hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@
\@wholewidth=0.4pt
\c@breite=\d@envb \divide\c@breite by65536
\advance\d@envb by-2\@wholewidth
\c@hsize=\d@envb \divide\c@hsize by65536%
\d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box%
\advance\d@envdp by4\fboxsep%
\c@envdp=\d@envdp \divide\c@envdp by65536%
\d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth
\c@hoehe=\d@hoehe \divide\c@hoehe by65536
\c@tmpa=\c@hsize \divide\c@tmpa by2%
\c@tmpb=\c@envdp \divide\c@tmpb by2%
\d@tmpa=2\fboxsep \advance\d@tmpa by\@wholewidth
\c@xoff=\d@tmpa \divide\c@xoff by65536%
\advance\d@tmpa by\dp\env@box
\c@yoff=\d@tmpa \divide\c@yoff by65536%
\unitlength 1pt\noindent
\begin{picture}(\c@breite,\c@hoehe)(0,0)
\put(\c@tmpa,\c@tmpb){\oval(\c@hsize,\c@envdp)}
\put(\c@xoff,\c@yoff){\box\env@box}%
\end{picture}%
}

5
pre_checkin.sh Normal file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
# This script has to be run prior to a check-in if changes were done
# to changes
cp gnuplot.changes gnuplot-doc.changes

75
webp_figures.gnu Normal file
View File

@@ -0,0 +1,75 @@
#
# generate animations for inclusion with HTML help documents
#
set term webp animate delay 50 size 300,300
set output './html/figure_spinning_d20.webp'
unset border; unset tics; unset key; set view equal xyz
set margins 0,0,0,0
set pm3d border linecolor "black"
do for [ang=1:360:2] {
set view 60, ang, 1.7
splot 'icosahedron.dat' with polygons fc "gold"
}
unset output
# This figure is already in the repository as a static illustration
#
# set term pngcairo size 300,300
# set output './html/figure_static_d20.png'
# replot
# unset output
reset
#
# Convex hull used to mask a pm3d surface
# (webp because the svg version is 10x larger)
#
set term webp font "Calisto MT,12" noanimate size 600,400
set output './html/figure_mask.webp'
set view map
set palette rgb 33,13,10
set xrange [-30:25]
set yrange [-30:25]
set dgrid3d 100,100 gauss 5
set pm3d explicit
unset key
unset tics
unset colorbox
unset border
set table $HULL
plot 'mask_pm3d.dat' using 1:2 convexhull with lines title "Convex hull"
unset table
set multiplot layout 1,2 spacing 0.0 margins 0.05,0.95,0.0,0.85
set title "Cluster of points\n defining the mask region"
splot 'mask_pm3d.dat' using 1:2:3 with pm3d, \
'mask_pm3d.dat' using 1:2:(0) nogrid with points pt 7 ps .5 lc "black"
set pm3d interp 3,3
set title "pm3d surface masked by\nconvex hull of the cluster"
splot $HULL using 1:2:(0) with mask, \
'mask_pm3d.dat' using 1:2:3 mask with pm3d
unset multiplot
# same thing as a png image for fallback if browser does not support webp
set term png font "Calisto MT,12" size 600,400
set output './html/figure_mask.png'
set multiplot layout 1,2 spacing 0.0 margins 0.05,0.95,0.0,0.85
set title "Cluster of points\n defining the mask region"
splot 'mask_pm3d.dat' using 1:2:3 with pm3d, \
'mask_pm3d.dat' using 1:2:(0) nogrid with points pt 7 ps .5 lc "black"
set pm3d interp 3,3
set title "pm3d surface masked by\nconvex hull of the cluster"
splot $HULL using 1:2:(0) with mask, \
'mask_pm3d.dat' using 1:2:3 mask with pm3d
unset multiplot
reset