GPlates fork - Multi vertex select, split polygons and more

Hi!

GPlates 2.6.0-dev8-SR1 — an unofficial fork for worldbuilding

This is not an official GPlates release. It is a community fork, built by me, not produced or
endorsed by the GPlates team. Please don’t report problems with it here or to them — there’s an
issue tracker on the fork, linked below.

I’m posting because a few people on this forum use GPlates for imagined worlds rather than the real
Earth, and some of what’s in this build may be useful to them.


What it is

GPlates 2.6.0-dev8 with a set of changes aimed at building fictional planets: bulk editing, ways of
reducing the number of features you’re managing by hand, and a handful of fixes to things that got
in the way.

Downloadshttps://github.com/CaliTarheel/GPlates/releases/tag/2.6.0-dev8-SR1

  • Windows — unzip and run gplates.exe. No installer, everything bundled.

  • macOS (Apple Silicon) — the .dmg is not code signed, so Gatekeeper will refuse it the
    first time. Right-click the app and choose Open, then confirm. Signing needs a paid Apple
    developer account, which I don’t have.

  • A short PDF manual covering the interface changes is attached to the same release.


What’s in it

Fixes

  • Opening a project or clearing a session could abort GPlates outright — no error dialog, nothing in
    the log, just gone. Two discarded Scribe transcribe results were throwing from a destructor,
    which reaches std::terminate without unwinding, so nothing could catch it. Fixed.

  • Pole adjustments now commit to the model properly (this is upstream’s fix for issue #38).

  • Preferences radio buttons silently not saving under Qt6.

  • Files under non-ASCII paths load and save reliably.

  • Qt’s font-probe warnings no longer flood the log with qt.text.font.db: OpenType support
    missing... every time you open a dialog.

Editing

  • Split Plate — cut a plate polygon with a polyline.

  • Boolean Polygons — union, subtract, intersect or symmetric-difference selected polygons.

  • Place Circular Features — size-limited circular polygons or closed polylines that persist as
    real features.

  • Retire Subducted Oceanic Crust across a reconstruction interval.

  • Multi-vertex editing — Shift-click vertices or Shift-drag a lasso, then move them together.

  • Rotation File Editor, keyframe copying, and drift-correction tools.

  • Rotation Hierarchy viewer — the plate circuit as a tree, under the Reconstruction menu.

  • Active Feature Types preferences — hide the feature types you never use, and save/load those
    lists as files.

  • Select Last Created Feature — Edit menu; moves the view into the feature’s lifetime if it
    isn’t visible at the current time.


Things to know before you try it

  • It is a testing build. Much of the above is still in open pull requests rather than reviewed
    and merged. It has been run, but not extensively, and not by many people.

  • Back up your project first. Some of these tools modify or delete features. Undo is
    implemented, but I would not stake a week’s work on it.

  • The drift-rotation checkbox has never been exercised by anyone. If you use it, check the
    .rot file actually changed on disk.


If you have had the offset mouse cursor

There’s a long-running report of the mouse cursor being offset from where it actually is in the 3D
globe view on Windows — the thread is here. It was traced to a Qt bug fixed in Qt
5.15.2, but people kept hitting it anyway, because a Qt5 DLL belonging to some other application
was getting loaded into the process instead of the one shipped with GPlates. Hence all the
suggestions in that thread about CCleaner, startup programs and DLL redirection.

This build cannot have that problem. It is built against Qt6 and bundles Qt6Core.dll, so
there is no Qt5Core.dll for another application’s copy to displace. If the offset cursor has been
bothering you, this will save you from it.

It also now logs the Qt version it is actually running, and where that library was loaded from, in
GPlates_log.txt at startup — so if anything like this ever happens again, the log says which
library is responsible instead of leaving you to guess.

[cursor-thread] Mouse cursor offset in GPlates

On the relationship to upstream

Everything here is built on the GPlates development branch, and the intention is to feed things back
rather than diverge. One example from this build: while chasing that project-loading crash, it
turned out that a std::terminate caused by a throw from a destructor produced no diagnostic at all
— no dialog, an empty log, and a catch (...) placed directly around the failing code made no
difference, because the handler was unreachable rather than missing.

I reported that upstream ([GPlates/GPlates#41]), and the team fixed it properly — both a terminate
handler and, better, moving the throw out of a boost::shared_ptr deleter so it can actually be
caught. That fix is in this build, and it will be in mainline GPlates. Thanks to them for the quick
turnaround.

GPlates is GPL v2; source for this build is the repository above, at the commit named in the release.

[GPlates/GPlates#41] Improvement request: install a std::terminate handler so throw-from-destructor aborts are diagnosable · Issue #41 · GPlates/GPlates · GitHub