]> granicus.if.org Git - graphviz/log
graphviz
2 years agocommon parseSegs: fix unchecked allocation failure
Matthew Fernandez [Sat, 15 Oct 2022 18:02:53 +0000 (11:02 -0700)]
common parseSegs: fix unchecked allocation failure

2 years agocommon initMapData: fix unchecked allocation failure
Matthew Fernandez [Sat, 15 Oct 2022 18:01:50 +0000 (11:01 -0700)]
common initMapData: fix unchecked allocation failure

2 years agosmyrna loadGraph: fix unchecked allocation failure
Matthew Fernandez [Sat, 15 Oct 2022 18:00:18 +0000 (11:00 -0700)]
smyrna loadGraph: fix unchecked allocation failure

2 years agosmyrna get_data_dir: fix unchecked allocation failure
Matthew Fernandez [Sat, 15 Oct 2022 17:59:52 +0000 (10:59 -0700)]
smyrna get_data_dir: fix unchecked allocation failure

2 years agoMerge branch 'smattr/8699c0b2-506c-4894-baa7-ebd68e41a77c' into 'main'
Matthew Fernandez [Wed, 19 Oct 2022 04:25:21 +0000 (04:25 +0000)]
Merge branch 'smattr/8699c0b2-506c-4894-baa7-ebd68e41a77c' into 'main'

common: fix some unchecked allocation failures

See merge request graphviz/graphviz!2909

2 years agocommon make_label: fix unchecked allocation failures
Matthew Fernandez [Fri, 14 Oct 2022 04:02:41 +0000 (21:02 -0700)]
common make_label: fix unchecked allocation failures

2 years agocommon make_html_label: fix unchecked allocation failures
Matthew Fernandez [Fri, 14 Oct 2022 04:02:24 +0000 (21:02 -0700)]
common make_html_label: fix unchecked allocation failures

2 years agocommon pos_html_tbl: fix unchecked allocation failure
Matthew Fernandez [Fri, 14 Oct 2022 04:02:03 +0000 (21:02 -0700)]
common pos_html_tbl: fix unchecked allocation failure

2 years agocommon pos_html_cell: fix unchecked allocation failure
Matthew Fernandez [Fri, 14 Oct 2022 04:01:46 +0000 (21:01 -0700)]
common pos_html_cell: fix unchecked allocation failure

2 years agocommon initAnchor: fix unchecked allocation failure
Matthew Fernandez [Fri, 14 Oct 2022 04:01:28 +0000 (21:01 -0700)]
common initAnchor: fix unchecked allocation failure

2 years agoMerge branch 'smattr/6cc83583-ac65-48bd-a384-2d2630f3e9ca' into 'main'
Matthew Fernandez [Wed, 19 Oct 2022 01:16:13 +0000 (01:16 +0000)]
Merge branch 'smattr/6cc83583-ac65-48bd-a384-2d2630f3e9ca' into 'main'

remove checks for librsvg ≥2.36.0 and 'HAVE_SVG_2_36'

See merge request graphviz/graphviz!2908

2 years agoremove checks for librsvg ≥2.36.0 and 'HAVE_SVG_2_36'
Matthew Fernandez [Fri, 14 Oct 2022 00:15:45 +0000 (17:15 -0700)]
remove checks for librsvg ≥2.36.0 and 'HAVE_SVG_2_36'

The only code that used this was removed in
63a5fcd96f53761630a37fff7657db5d03619a7d.

2 years agoMerge branch 'fix-issue-372-for-dot-arrows' into 'main'
Magnus Jacobsson [Tue, 18 Oct 2022 19:58:13 +0000 (19:58 +0000)]
Merge branch 'fix-issue-372-for-dot-arrows' into 'main'

Fix issue 372 for dot arrows

Closes #372

See merge request graphviz/graphviz!2910

2 years agoarrows: arrow_length_dot: take edge penwidth into account when calculating length
Magnus Jacobsson [Thu, 6 Oct 2022 06:23:38 +0000 (08:23 +0200)]
arrows: arrow_length_dot: take edge penwidth into account when calculating length

The test_edge_node_overlap_dot_edge_arrow test case now succeeds, so
the expectancy that it should fail is removed.

Towards https://gitlab.com/graphviz/graphviz/-/issues/372.

2 years agoarrows: arrow_type_dot: fix positioning of 'dot' shaped edge arrows
Magnus Jacobsson [Wed, 5 Oct 2022 14:58:08 +0000 (16:58 +0200)]
arrows: arrow_type_dot: fix positioning of 'dot' shaped edge arrows

Towards https://gitlab.com/graphviz/graphviz/-/issues/372.

2 years agoadd new test_edge_node_overlap_dot_edge_arrow test
Magnus Jacobsson [Wed, 5 Oct 2022 14:45:29 +0000 (16:45 +0200)]
add new test_edge_node_overlap_dot_edge_arrow test

2 years agotests: GraphvizEdge: handle primitive arrow shape 'dot' in arrowtail_outline_bbox
Magnus Jacobsson [Wed, 5 Oct 2022 20:28:14 +0000 (22:28 +0200)]
tests: GraphvizEdge: handle primitive arrow shape 'dot' in arrowtail_outline_bbox

2 years agotests: GraphvizEdge: handle primitive arrow shape 'dot' in arrowhead_outline_bbox
Magnus Jacobsson [Wed, 5 Oct 2022 20:28:14 +0000 (22:28 +0200)]
tests: GraphvizEdge: handle primitive arrow shape 'dot' in arrowhead_outline_bbox

2 years agoarrows: arrow_length_box: change to 2-space indentation
Magnus Jacobsson [Tue, 18 Oct 2022 18:43:18 +0000 (20:43 +0200)]
arrows: arrow_length_box: change to 2-space indentation

This is newly added code that should conform to the clang-format
style.

2 years agoMerge branch 'gshklover_msbuild' into 'main'
Matthew Fernandez [Sat, 15 Oct 2022 21:43:05 +0000 (21:43 +0000)]
Merge branch 'gshklover_msbuild' into 'main'

Increase stack size for dot MSBUILD project file (avoid crash on larger graphs)

See merge request graphviz/graphviz!2858

2 years agoIncrease stack size for dot MSBUILD project file (avoid crash on larger graphs)
greg [Fri, 7 Oct 2022 00:34:47 +0000 (17:34 -0700)]
Increase stack size for dot MSBUILD project file (avoid crash on larger graphs)

Comment from Matthew Fernandez: It is believed this resolves some instances of
stack overflow in `dfs_enter_outedge` experienced with larger graphs on Windows.

Co-authored-by: Matthew Fernandez <matthew.fernandez@gmail.com>
2 years agoMerge branch 'smattr/1350efe5-0c2c-4d52-9e20-2cdee7f2cc34' into 'main'
Matthew Fernandez [Sat, 15 Oct 2022 01:31:39 +0000 (01:31 +0000)]
Merge branch 'smattr/1350efe5-0c2c-4d52-9e20-2cdee7f2cc34' into 'main'

smyrna: fix several memory leaks

See merge request graphviz/graphviz!2901

2 years agosmyrna mTestgvpr: remove unnecessary dynamic allocation
Matthew Fernandez [Mon, 10 Oct 2022 15:22:47 +0000 (08:22 -0700)]
smyrna mTestgvpr: remove unnecessary dynamic allocation

This is the equivalent of e18e57257e968545ff9d130a3b9b7bdd440deb1c applied to
similar code.

2 years agosmyrna on_gvprbuttonsave_clicked: fix comment description
Matthew Fernandez [Mon, 10 Oct 2022 15:17:21 +0000 (08:17 -0700)]
smyrna on_gvprbuttonsave_clicked: fix comment description

This appears to have been copy-pasted from `on_gvprbuttonload_clicked` and not
updated.

2 years agosmyrna on_gvprbuttonsave_clicked: simplify file writing
Matthew Fernandez [Mon, 10 Oct 2022 15:16:04 +0000 (08:16 -0700)]
smyrna on_gvprbuttonsave_clicked: simplify file writing

Compilers like GCC can make this optimizing transform themselves, but this
change aids less sophisticated compilers.

2 years agosmyrna on_gvprbuttonsave_clicked: fix memory leak
Matthew Fernandez [Mon, 10 Oct 2022 15:13:56 +0000 (08:13 -0700)]
smyrna on_gvprbuttonsave_clicked: fix memory leak

The `gtk_text_buffer_get_text` docs¹ note:

  Return value
  …
  The caller of the method takes ownership of the data, and is responsible for
  freeing it.

¹ https://docs.gtk.org/gtk4/method.TextBuffer.get_text.html

2 years agosmyrna savefiledlg, on_gvprbuttonsave_clicked: fix memory leaks
Matthew Fernandez [Mon, 10 Oct 2022 15:08:51 +0000 (08:08 -0700)]
smyrna savefiledlg, on_gvprbuttonsave_clicked: fix memory leaks

The `gtk_file_chooser_get_filename` docs¹ note:

  Return value
  …
  The currently selected filename, or NULL if no file is selected, or the
  selected file can’t be represented with a local filename. Free with g_free().

  The caller of the method takes ownership of the data, and is responsible for
  freeing it.

Contrary to this, `savefiledlg` was duplicating the pointed to data and then
losing the pointer `gtk_file_chooser_get_filename` returned.

The straightforward fix to this would be to retain the pointer and then `g_free`
it after copying its contents into the buffer `xbuf`. However, we can instead
refactor this function to avoid the copy altogether and simply pass the original
memory back to the caller, making this both a fix and an optimization.

On top of this, `on_gvprbuttonsave_clicked` was never calling `agxbfree` on its
local `xbuf`. By moving to a standard string, we also fix this memory leak.

¹ https://docs.gtk.org/gtk3/method.FileChooser.get_filename.html

2 years agosmyrna savefiledlg: remove filter parameters
Matthew Fernandez [Mon, 10 Oct 2022 15:03:46 +0000 (08:03 -0700)]
smyrna savefiledlg: remove filter parameters

This function is only ever called without any filters.

2 years agosmyrna openfiledlg: fix memory leak
Matthew Fernandez [Mon, 10 Oct 2022 04:37:45 +0000 (21:37 -0700)]
smyrna openfiledlg: fix memory leak

The `gtk_file_chooser_get_filename` docs¹ note:

  Return value
  …
  The currently selected filename, or NULL if no file is selected, or the
  selected file can’t be represented with a local filename. Free with g_free().

  The caller of the method takes ownership of the data, and is responsible for
  freeing it.

Contrary to this, `openfiledlg` was duplicating the pointed to data and then
losing the pointer `gtk_file_chooser_get_filename` returned.

The straightforward fix to this would be to retain the pointer and then `g_free`
it after copying its contents into the buffer `xbuf`. However, we can instead
refactor this function to avoid the copy altogether and simply pass the original
memory back to the caller, making this both a fix and an optimization.

¹ https://docs.gtk.org/gtk3/method.FileChooser.get_filename.html

2 years agosmyrna openfiledlg: remove filter parameters
Matthew Fernandez [Mon, 10 Oct 2022 04:28:53 +0000 (21:28 -0700)]
smyrna openfiledlg: remove filter parameters

This function is only ever called without any filters.

2 years agoMerge branch 'smattr/d09d7fac-10de-445a-a41f-d426f8d2bffb' into 'main'
Matthew Fernandez [Fri, 14 Oct 2022 16:38:15 +0000 (16:38 +0000)]
Merge branch 'smattr/d09d7fac-10de-445a-a41f-d426f8d2bffb' into 'main'

graphml2gv: remove some dead code

See merge request graphviz/graphviz!2906

2 years agocommon appendFLineList: fix unchecked allocation failure
Matthew Fernandez [Thu, 13 Oct 2022 04:46:00 +0000 (21:46 -0700)]
common appendFLineList: fix unchecked allocation failure

2 years agographml2gv: remove 'composite_buffer' from 'userdata_t'
Matthew Fernandez [Thu, 13 Oct 2022 04:36:28 +0000 (21:36 -0700)]
graphml2gv: remove 'composite_buffer' from 'userdata_t'

1d28d7d2b4d2b2551bd1f432aa175f54a69364a4 seems to have copied this
implementation of `userdata_t` from cmd/tools/gxl2gv.c without noticing the
`composite_buffer` member is never used in graphml2gv.

2 years agographml2gv: remove 'xml_attr_value' from 'userdata_t'
Matthew Fernandez [Thu, 13 Oct 2022 04:33:36 +0000 (21:33 -0700)]
graphml2gv: remove 'xml_attr_value' from 'userdata_t'

1d28d7d2b4d2b2551bd1f432aa175f54a69364a4 seems to have copied this
implementation of `userdata_t` from cmd/tools/gxl2gv.c without noticing the
`xml_attr_value` member is never written to in graphml2gv.

2 years agographml2gv: remove 'xml_attr_name' from 'userdata_t'
Matthew Fernandez [Thu, 13 Oct 2022 04:31:29 +0000 (21:31 -0700)]
graphml2gv: remove 'xml_attr_name' from 'userdata_t'

1d28d7d2b4d2b2551bd1f432aa175f54a69364a4 seems to have copied this
implementation of `userdata_t` from cmd/tools/gxl2gv.c without noticing the
`xml_attr_name` member is never written to in graphml2gv.

2 years agoMerge branch 'fix-issue-372-for-box-arrows' into 'main'
Magnus Jacobsson [Fri, 14 Oct 2022 15:35:21 +0000 (15:35 +0000)]
Merge branch 'fix-issue-372-for-box-arrows' into 'main'

Fix issue 372 for box arrows

Closes #372

See merge request graphviz/graphviz!2907

2 years agoarrows: arrow_length_box: take edge penwidth into account when calculating length
Magnus Jacobsson [Tue, 4 Oct 2022 11:40:45 +0000 (13:40 +0200)]
arrows: arrow_length_box: take edge penwidth into account when calculating length

The test_edge_node_overlap_box_edge_arrow test case now succeeds, so
the expectancy that it should fail is removed.

Towards https://gitlab.com/graphviz/graphviz/-/issues/372.

2 years agoarrows: arrow_type_box: fix positioning of box arrow
Magnus Jacobsson [Tue, 4 Oct 2022 11:40:09 +0000 (13:40 +0200)]
arrows: arrow_type_box: fix positioning of box arrow

Towards https://gitlab.com/graphviz/graphviz/-/issues/372.

2 years agotests: add new test_edge_node_overlap_box_edge_arrows test
Magnus Jacobsson [Tue, 4 Oct 2022 11:38:55 +0000 (13:38 +0200)]
tests: add new test_edge_node_overlap_box_edge_arrows test

2 years agotests: GraphvizEdge: handle primitive arrow shape 'box' in arrowtail_outline_bbox
Magnus Jacobsson [Tue, 4 Oct 2022 13:21:11 +0000 (15:21 +0200)]
tests: GraphvizEdge: handle primitive arrow shape 'box' in arrowtail_outline_bbox

2 years agotests: GraphvizEdge: handle primitive arrow shape 'box' in arrowhead_outline_bbox
Magnus Jacobsson [Tue, 4 Oct 2022 13:21:00 +0000 (15:21 +0200)]
tests: GraphvizEdge: handle primitive arrow shape 'box' in arrowhead_outline_bbox

2 years agotests: graphviz_edge: remove 'arrow' method and inline instead
Magnus Jacobsson [Tue, 4 Oct 2022 13:08:15 +0000 (15:08 +0200)]
tests: graphviz_edge: remove 'arrow' method and inline instead

Upcoming commits will introduce handling of primitive arrow shapes
other than 'normal' or 'inv' which cannot be represented by a single
SVG element.

2 years agotests: test_edge_node_overlap_utilities: factor out GraphvizEdge::arrowtail_outline_b...
Magnus Jacobsson [Tue, 4 Oct 2022 12:30:12 +0000 (14:30 +0200)]
tests: test_edge_node_overlap_utilities: factor out GraphvizEdge::arrowtail_outline_bbox()

2 years agotests: test_edge_node_overlap_utilities: factor out GraphvizEdge::arrowhead_outline_b...
Magnus Jacobsson [Tue, 4 Oct 2022 12:30:12 +0000 (14:30 +0200)]
tests: test_edge_node_overlap_utilities: factor out GraphvizEdge::arrowhead_outline_bbox()

2 years agoMerge branch 'smattr/07c690c2-bf9b-4aba-a3be-31defa322cfb' into 'main'
Matthew Fernandez [Fri, 14 Oct 2022 01:38:03 +0000 (01:38 +0000)]
Merge branch 'smattr/07c690c2-bf9b-4aba-a3be-31defa322cfb' into 'main'

bump required CMake version to 3.13.0

See merge request graphviz/graphviz!2905

2 years agobump required CMake version to 3.13.0
Matthew Fernandez [Thu, 13 Oct 2022 00:52:52 +0000 (17:52 -0700)]
bump required CMake version to 3.13.0

This allows dropping several workarounds in the CMake build system. The only
supported platform with a CMake version less than 3.13.0 is Ubuntu 18.04. Given
CMake is not the default build system, the age of Ubuntu 18.04 makes it unlikely
there are users there building Graphviz from source, and later CMake versions
are easily obtainable from Kitware, it seems reasonable to increase this
requirement.

Gitlab: #2290

2 years agoCI: on Ubuntu 18.04, install CMake from Kitware instead of Apt
Matthew Fernandez [Wed, 12 Oct 2022 04:43:55 +0000 (21:43 -0700)]
CI: on Ubuntu 18.04, install CMake from Kitware instead of Apt

This moves the CMake version available on this platform from 3.10.2 to 3.24.2.
The new CMake floor is 3.16.3, determined by Ubuntu 20.04.

Gitlab: #2290

2 years agoMerge branch 'smattr/85e882d7-72ce-408a-91ca-8ef4a2de2ad5' into 'main'
Matthew Fernandez [Thu, 13 Oct 2022 05:16:50 +0000 (05:16 +0000)]
Merge branch 'smattr/85e882d7-72ce-408a-91ca-8ef4a2de2ad5' into 'main'

remove calls to 'rsvg_term'

See merge request graphviz/graphviz!2888

2 years agorsvg plugin gvloadimage_rsvg_cairo: remove unnecessary parens
Matthew Fernandez [Thu, 8 Sep 2022 00:27:49 +0000 (17:27 -0700)]
rsvg plugin gvloadimage_rsvg_cairo: remove unnecessary parens

2 years agorsvg plugin gvloadimage_rsvg_cairo: squash -Wunused-parameter warning
Matthew Fernandez [Thu, 8 Sep 2022 00:27:49 +0000 (17:27 -0700)]
rsvg plugin gvloadimage_rsvg_cairo: squash -Wunused-parameter warning

This function is used as a callback, so its unused parameter cannot easily be
removed.

2 years agorsvg plugin gvloadimage_rsvg_load: remove unnecessary cast
Matthew Fernandez [Thu, 8 Sep 2022 00:27:49 +0000 (17:27 -0700)]
rsvg plugin gvloadimage_rsvg_load: remove unnecessary cast

2 years agorsvg plugin gvloadimage_rsvg_load: remove unnecessary use of gboolean
Matthew Fernandez [Thu, 8 Sep 2022 00:27:49 +0000 (17:27 -0700)]
rsvg plugin gvloadimage_rsvg_load: remove unnecessary use of gboolean

2 years agoremove calls to 'rsvg_term'
Matthew Fernandez [Thu, 8 Sep 2022 00:27:49 +0000 (17:27 -0700)]
remove calls to 'rsvg_term'

The `rsvg_term` function has been a no-op for some time:¹

  rsvg_term has been deprecated since version 2.36 and should not be used in
  newly-written code.
  There is no need to de-initialize librsvg.
  This function does nothing.

Graphviz was calling it when linked against librsvg 2.36 (2.36.0 was released
2012-03-26). I do not know why this code was conditional as `rsvg_term` has been
a no-op since 2.35.0.² Moreover, calling it prior to it becoming a no-op was
wrong too. The commit that removed its functionality notes:

  rsvg_term() was dangerous to call

The problem is that it previously called libxml2’s `xmlCleanupParser` whose
documentation states:³

  This function name is somewhat misleading. It does not clean up parser state,
  it cleans up memory allocated by the library itself. It is a cleanup function
  for the XML library. It tries to reclaim all related global memory allocated
  for the library processing. It doesn't deallocate any document related memory.
  One should call xmlCleanupParser() only when the process has finished using
  the library and all XML/HTML documents built with it. See also xmlInitParser()
  which has the opposite function of preparing the library for operations.
  WARNING: if your application is multithreaded or has plugin support calling
  this may crash the application if another thread or a plugin is still using
  libxml2. It's sometimes very hard to guess if libxml2 is in use in the
  application, some libraries or plugins may use it without notice. In case of
  doubt abstain from calling this function or do it just before calling exit()
  to avoid leak reports from valgrind !

This seems to have come to light ~2010.⁴ But presumably there is still a long
tail of software in the wild still, like Graphviz, erroneously calling
`rsvg_term`.

¹ https://www.manpagez.com/html/rsvg-2.0/rsvg-2.0-2.52.1/RsvgHandle.php#rsvg-term
² Commit 7f27418cfcdea9cdd6b2bf81ea0b0f6cc5a18b30 of librsvg.
³ https://gnome.pages.gitlab.gnome.org/libxml2/devhelp/libxml2-parser.html#xmlCleanupParser
⁴ https://lists.fedoraproject.org/pipermail/devel/2010-January/129117.html
  https://bugzilla.redhat.com/show_bug.cgi?id=542277
  https://bugzilla.gnome.org/show_bug.cgi?id=592100

2 years agoMerge branch 'smattr/95708189-94d5-485b-a0c1-5face69b647d' into 'main'
Matthew Fernandez [Thu, 13 Oct 2022 02:09:48 +0000 (02:09 +0000)]
Merge branch 'smattr/95708189-94d5-485b-a0c1-5face69b647d' into 'main'

gvc: remove dead code, swap some stat() for access()

See merge request graphviz/graphviz!2902

2 years agogvc: remove unused 'gv_argvlist_free'
Matthew Fernandez [Tue, 11 Oct 2022 01:36:29 +0000 (18:36 -0700)]
gvc: remove unused 'gv_argvlist_free'

The last use of this was removed in b3a03d1279b00565991abb4f0354c28f69e97650.

2 years agogvc: remove unused 'gvNEWargvlist'
Matthew Fernandez [Tue, 11 Oct 2022 01:36:03 +0000 (18:36 -0700)]
gvc: remove unused 'gvNEWargvlist'

This seems to have never been used.

2 years agogvc gvplugin_library_load: replace read check using 'stat' with using 'access'
Matthew Fernandez [Tue, 11 Oct 2022 01:19:18 +0000 (18:19 -0700)]
gvc gvplugin_library_load: replace read check using 'stat' with using 'access'

This probably uses `stat` under the hood too, but is slightly more concise and
clear about intent.

2 years agogvc gvconfig: replace existence check using 'stat' with using 'access'
Matthew Fernandez [Tue, 11 Oct 2022 01:13:19 +0000 (18:13 -0700)]
gvc gvconfig: replace existence check using 'stat' with using 'access'

This probably uses `stat` under the hood too, but is slightly more concise and
clear about intent.

2 years agoMerge branch 'smattr/63fa6275-5ac8-4657-9b09-05d3c82776e2' into 'main'
Matthew Fernandez [Thu, 13 Oct 2022 01:03:21 +0000 (01:03 +0000)]
Merge branch 'smattr/63fa6275-5ac8-4657-9b09-05d3c82776e2' into 'main'

stop enabling -ffast-math on any platform

Closes #2296 and #1412

See merge request graphviz/graphviz!2904

2 years agoremove no longer needed 'FPERR' work around
Matthew Fernandez [Wed, 12 Oct 2022 04:29:06 +0000 (21:29 -0700)]
remove no longer needed 'FPERR' work around

As of the previous commit, `-ffast-math` is no longer enabled, so this is not
needed any more.

Gitlab: #1412, #2296

2 years agostop enabling -ffast-math on any platform
Matthew Fernandez [Wed, 12 Oct 2022 04:10:54 +0000 (21:10 -0700)]
stop enabling -ffast-math on any platform

The `-ffast-math` compiler option enables a mode of floating point semantics
that are heavily relaxed from strict IEEE 754 conformance in the name of speed.¹
The permissible optimizations under `-ffast-math` include transformations that
produce floating point results most users would consider wrong. It is unclear
why “do math fast but incorrectly” is a useful mode. It seems the world is
finally coming around to this tenet.²

This change stops enabling `-ffast-math` anywhere in the Autotools build system.

Gitlab: fixes #1412, #2296
Reported-by: Kasper Daniel Hansen
Reported-by: Ross Barnowski
¹ https://gcc.gnu.org/wiki/FloatingPointMath
² https://simonbyrne.github.io/notes/fastmath/,
  https://moyix.blogspot.com/2022/09/someones-been-messing-with-my-subnormals.html

2 years agoremove suppression of -ffast-math when building with ICC
Matthew Fernandez [Wed, 12 Oct 2022 04:02:18 +0000 (21:02 -0700)]
remove suppression of -ffast-math when building with ICC

The Intel C Compiler does not support the `-ffast-math` command line option, so
this logic was suppressing it. But it is coming before anything in the Graphviz
build system itself that would add `-ffast-math`. So it is actually suppressing
a `-ffast-math` addition coming from the user’s environment. If you are a user
compiling Graphviz with ICC, I have a very simple alternative for you: do not
pass `-ffast-math` explicitly.

Gitlab: #1412, #2296

2 years agowrap over-long CHANGELOG lines
Matthew Fernandez [Wed, 12 Oct 2022 04:07:58 +0000 (21:07 -0700)]
wrap over-long CHANGELOG lines

2 years agocommon miter_point: fix comment typo
Matthew Fernandez [Wed, 12 Oct 2022 03:59:30 +0000 (20:59 -0700)]
common miter_point: fix comment typo

2 years agoMerge branch 'smattr/14781c34-102f-4608-96e5-87899b5c5213' into 'main'
Matthew Fernandez [Wed, 12 Oct 2022 15:54:54 +0000 (15:54 +0000)]
Merge branch 'smattr/14781c34-102f-4608-96e5-87899b5c5213' into 'main'

common: some minor clean up

See merge request graphviz/graphviz!2896

2 years agocommon arrow_flags: abbreviate some bitwise assignments
Matthew Fernandez [Sat, 8 Oct 2022 22:35:52 +0000 (15:35 -0700)]
common arrow_flags: abbreviate some bitwise assignments

2 years agocommon: remove unnecessary parens
Matthew Fernandez [Sat, 8 Oct 2022 22:35:42 +0000 (15:35 -0700)]
common: remove unnecessary parens

2 years agocommon: use a simpler C99 zero init for null terminating 'Arrownames'
Matthew Fernandez [Sat, 8 Oct 2022 22:27:52 +0000 (15:27 -0700)]
common: use a simpler C99 zero init for null terminating 'Arrownames'

2 years agocommon: mark 'Arrownames' const
Matthew Fernandez [Sat, 8 Oct 2022 22:27:42 +0000 (15:27 -0700)]
common: mark 'Arrownames' const

2 years agocommon: use a simpler C99 zero init for null terminating 'Arrowmods'
Matthew Fernandez [Sat, 8 Oct 2022 22:27:20 +0000 (15:27 -0700)]
common: use a simpler C99 zero init for null terminating 'Arrowmods'

2 years agocommon: mark 'Arrowmods' const
Matthew Fernandez [Sat, 8 Oct 2022 22:27:00 +0000 (15:27 -0700)]
common: mark 'Arrowmods' const

2 years agocommon: use a simpler C99 zero init for null terminating 'Arrowsynonyms'
Matthew Fernandez [Sat, 8 Oct 2022 22:26:35 +0000 (15:26 -0700)]
common: use a simpler C99 zero init for null terminating 'Arrowsynonyms'

2 years agocommon: mark 'Arrowsynonyms' const
Matthew Fernandez [Sat, 8 Oct 2022 22:26:11 +0000 (15:26 -0700)]
common: mark 'Arrowsynonyms' const

2 years agocommon arrow_match_name_frag: take 'arrownames' parameter as const
Matthew Fernandez [Sat, 8 Oct 2022 22:25:01 +0000 (15:25 -0700)]
common arrow_match_name_frag: take 'arrownames' parameter as const

2 years agocommon: use a simpler C99 zero init for null terminating 'Arrowdirs'
Matthew Fernandez [Sat, 8 Oct 2022 22:22:30 +0000 (15:22 -0700)]
common: use a simpler C99 zero init for null terminating 'Arrowdirs'

2 years agocommon: mark 'Arrowdirs' constant
Matthew Fernandez [Sat, 8 Oct 2022 22:19:31 +0000 (15:19 -0700)]
common: mark 'Arrowdirs' constant

2 years agoMerge branch 'getopt' into 'main'
Mark Hansen [Wed, 12 Oct 2022 09:56:52 +0000 (09:56 +0000)]
Merge branch 'getopt' into 'main'

Avoid uninitialized CMake GETOPT variable warnings

See merge request graphviz/graphviz!2894

2 years agoAvoid uninitialized CMake GETOPT variable warnings
Mark Hansen [Sat, 8 Oct 2022 10:21:49 +0000 (21:21 +1100)]
Avoid uninitialized CMake GETOPT variable warnings

Only access GETOPT_INCLUDE_DIRS if GETOPT is found.

Fix a few warnings with --warn-uninitialized like:

```
CMake Warning (dev) at cmd/gvmap/CMakeLists.txt:20
(target_include_directories):
  uninitialized variable 'GETOPT_INCLUDE_DIRS'
```

Towards #2291

2 years agoMerge branch 'devil' into 'main'
Mark Hansen [Wed, 12 Oct 2022 07:47:16 +0000 (07:47 +0000)]
Merge branch 'devil' into 'main'

DevIL plugin: use IL_ CMake variables

Closes #2289

See merge request graphviz/graphviz!2891

2 years agoDevIL plugin: use IL_ CMake variables
Mark Hansen [Sat, 8 Oct 2022 05:58:56 +0000 (16:58 +1100)]
DevIL plugin: use IL_ CMake variables

https://cmake.org/cmake/help/latest/module/FindDevIL.html#result-variables
mentions that FindDevIL CMake module sets the following, frustratingly
inconsistent variables:

- IL_LIBRARIES
- IL_INCLUDE_DIR
- DevIL_FOUND

Note I can't actually test this on my local machine, so I'll be relying
on CI.

Fixes #2289

2 years agoMerge branch 'smattr/c0acb230-1b61-4e7b-9922-aab37aeda9f7' into 'main'
Matthew Fernandez [Wed, 12 Oct 2022 03:44:08 +0000 (03:44 +0000)]
Merge branch 'smattr/c0acb230-1b61-4e7b-9922-aab37aeda9f7' into 'main'

bump required CMake version to 3.10.2

See merge request graphviz/graphviz!2898

2 years agobump required CMake version to 3.10.2
Matthew Fernandez [Sun, 9 Oct 2022 17:45:35 +0000 (10:45 -0700)]
bump required CMake version to 3.10.2

Of the platforms Graphviz supports, the one with the oldest CMake version
available is Ubuntu 18.04, which has CMake 3.10.2. This change raises the
baseline CMake requirement to indicate we no longer support CMake 3.9.

The diff between CMake 3.9 and 3.10 does not actually contain anything useful to
Graphviz. But it still seems wise to proactively move our floor forwards.

2 years agoCI: when using CMake, echo its version into the log
Matthew Fernandez [Sun, 9 Oct 2022 17:21:32 +0000 (10:21 -0700)]
CI: when using CMake, echo its version into the log

Useful for debugging.

2 years agoMerge branch 'smattr/d4a525e3-e3d6-489c-b64d-a901f96bdfdd' into 'main'
Matthew Fernandez [Wed, 12 Oct 2022 01:09:37 +0000 (01:09 +0000)]
Merge branch 'smattr/d4a525e3-e3d6-489c-b64d-a901f96bdfdd' into 'main'

remove 'MOSEK'-guarded code

See merge request graphviz/graphviz!2889

2 years agoneatogen: remove now unused 'delete_digcola_levels'
Matthew Fernandez [Thu, 8 Sep 2022 00:27:49 +0000 (17:27 -0700)]
neatogen: remove now unused 'delete_digcola_levels'

2 years agoneatogen: remove now unused 'print_digcola_levels'
Matthew Fernandez [Thu, 8 Sep 2022 00:27:49 +0000 (17:27 -0700)]
neatogen: remove now unused 'print_digcola_levels'

2 years agoremove 'MOSEK'-guarded code
Matthew Fernandez [Thu, 8 Sep 2022 00:27:49 +0000 (17:27 -0700)]
remove 'MOSEK'-guarded code

Noting in the build systems defines this.

2 years agoMerge branch 'link-libraries' into 'main'
Mark Hansen [Tue, 11 Oct 2022 22:28:34 +0000 (22:28 +0000)]
Merge branch 'link-libraries' into 'main'

Use full paths to pangocairo libraries, not names

See merge request graphviz/graphviz!2890

2 years agoUse full paths to pangocairo libraries, not names
Mark Hansen [Sat, 8 Oct 2022 03:32:49 +0000 (14:32 +1100)]
Use full paths to pangocairo libraries, not names

This lets me build on macOS.

Thanks to Matthew for finding this fix for #2286

There are a few other usages of PANGOCAIRO_LIBRARIES within Graphviz,
but none that I'm currently compiling on macOS. Maybe those should be
moved too, but I've just started with this one.

2 years agoMerge branch 'fix-issue-372-for-polygon-shaped-nodes-and-normal-arrows' into 'main'
Magnus Jacobsson [Tue, 11 Oct 2022 20:46:22 +0000 (20:46 +0000)]
Merge branch 'fix-issue-372-for-polygon-shaped-nodes-and-normal-arrows' into 'main'

Fix overlap caused by penwidth for polygon-based nodes and normal and inv edge arrows

Closes #372

See merge request graphviz/graphviz!2701

2 years agoshapes: point_init/point_inside: fix clipping of edge at node outline
Magnus Jacobsson [Fri, 16 Sep 2022 10:35:53 +0000 (12:35 +0200)]
shapes: point_init/point_inside: fix clipping of edge at node outline

Take node penwidth into account for the point node shape

Following the fix for polygon and ellipse shapes except the 'point'
shape, this fixes the second part of arrow not respecting penwidth for
the 'point' shape. A similar fix needs to be applied to fix the second
part for the 'cylinder' node shape.

The test_edge_node_overlap_point_node_shape test now succeeds, so the
expectancy that it should fail is removed.

Towards https://gitlab.com/graphviz/graphviz/-/issues/372.

2 years agoshapes: poly_init: fix clipping of edge at node outline for ellipse node shapes
Magnus Jacobsson [Fri, 16 Sep 2022 08:53:36 +0000 (10:53 +0200)]
shapes: poly_init: fix clipping of edge at node outline for ellipse node shapes

Take node penwidth into account also for ellipse node shapes.

Following the fix for polygon node shapes, this fixes the second part
of arrow not respecting penwith for ellipse shapes other than
'point'. Similar fixes need to be applied to fix the second part for
the 'point' and 'cylinder' node shapes.

The test_edge_node_overlap_ellipse_node_shapes_except_point test now
succeeds, so the expectancy that it should fail is removed.

Towards https://gitlab.com/graphviz/graphviz/-/issues/372.

2 years agoarrows: arrow_type_normal0: fix positioning of normal/inv arrow also for l/r modifiers
Magnus Jacobsson [Thu, 15 Sep 2022 12:12:16 +0000 (14:12 +0200)]
arrows: arrow_type_normal0: fix positioning of normal/inv arrow also for l/r modifiers

The test_edge_node_overlap_normal_and_inv_edge_arrows_all_modifiers
now succeeds, so the expectancy that it should fail is removed.

2 years agoarrows: miter_point: add fallback to bevel
Magnus Jacobsson [Thu, 15 Sep 2022 17:01:54 +0000 (19:01 +0200)]
arrows: miter_point: add fallback to bevel

The 'l' and 'r' arrow shape modifiers make the arrow tip have a sharp
angle and causes the normal miter point to exceed the 'miter-limit'
and SVG renderers to fall back to a bevelled corner.

2 years agoarrows: arrow_length_normal: take edge penwidth into account when calculating length
Magnus Jacobsson [Sun, 17 Apr 2022 16:55:50 +0000 (18:55 +0200)]
arrows: arrow_length_normal: take edge penwidth into account when calculating length

This causes the edge stem to be clipped at the visual outline of the
edge arrow instead of at its "ideal" bounding box which fixes the too
large overlap between them that was introduced by eariler commits in
this series.

The test_max_edge_stem_arrow_overlap_simple.cpp,
test_edge_node_overlap_normal_and_inv_edge_arrows
test_edge_node_overlap_simple and test_edge_node_overlap_node_shapes
test cases now succeed, so the expectancy that they should fail is
removed.

Towards https://gitlab.com/graphviz/graphviz/-/issues/372.

2 years agoarrows: factor out arrow_type_normal0 function
Magnus Jacobsson [Sun, 17 Apr 2022 16:05:47 +0000 (18:05 +0200)]
arrows: factor out arrow_type_normal0 function

Towards https://gitlab.com/graphviz/graphviz/-/issues/372.

2 years agoarrows: refactor arrow length calculation to allow arrow type specific length functions
Magnus Jacobsson [Sun, 17 Apr 2022 15:45:24 +0000 (17:45 +0200)]
arrows: refactor arrow length calculation to allow arrow type specific length functions

Add a len function to arrowtype_t. This is currently a no-op. All
arrow types use a generic function that just returns the nominal
length. Future commits will replace the generic function with
functions specific for each arrow type.

Towards https://gitlab.com/graphviz/graphviz/-/issues/372.

2 years agosplines: bezier_clip: change to clip just inside instead of just outside the node
Magnus Jacobsson [Wed, 13 Apr 2022 21:01:41 +0000 (23:01 +0200)]
splines: bezier_clip: change to clip just inside instead of just outside the node

The previous changes removed *all* overlap between nodes and edges at
the expense of creating a very small gap instead. This is visually not
very pleasing. This change ensures that we get a very small minimum
overlap instead.

The test_min_edge_node_overlap_simple and
test_min_edge_node_overlap_node_shapes tests tests now succeed, so the
expectancy that they should fail is removed.

Towards https://gitlab.com/graphviz/graphviz/-/issues/372.

2 years agoshapes: star_inside: fix clipping of edge at node outline
Magnus Jacobsson [Wed, 14 Sep 2022 19:58:57 +0000 (21:58 +0200)]
shapes: star_inside: fix clipping of edge at node outline

Take node penwidth into account when doing the clipping of the 'star'
shape. This causes the clipping to occur at the visible node outline
instead of at the "ideal" bounding box which does not take node
penwidth into account.

For the star shape, this fixes the second part of arrow not respecting
penwidth. Similar fixes need to be applied to fix the second part for
other node shapes.

The test_max_edge_node_overlap_node_shapes test case now succeeds, so
the expectancy that it should fail is removed.

Towards https://gitlab.com/graphviz/graphviz/-/issues/372.

2 years agoshapes: poly_init/poly_inside: fix clipping of edge at node outline
Magnus Jacobsson [Mon, 11 Apr 2022 18:06:26 +0000 (20:06 +0200)]
shapes: poly_init/poly_inside: fix clipping of edge at node outline

Take node penwidth into account when doing the clipping. This causes
the clipping to occur at the visible node outline instead of at the
"ideal" bounding box which assumes a zero node penwidth.

For polygon shapes, this fixes the second part of arrow not respecting
penwidth. Similar fixes need to be applied to fix the second part for
other node shapes.

The test_max_edge_node_overlap_simple test now succeeds, so the
expectancy that it should fail is removed.

The test_min_edge_node_overlap_simple and
test_min_edge_node_overlap_node_shapes tests now fail since there's
now a small gap between the edge and the node, so they're temporarily
set to be expected to fail. This gap will be removed in an upcoming
commit in this series.

Towards https://gitlab.com/graphviz/graphviz/-/issues/372.