SpeakerNames.h header

#include <ew/app/SpeakerNames.h>

Namespace ew::app

Functions

bool ew::app::branching::speakerIsMissing(const ew::core::branching::BranchNode &node, const ew::core::project::Project &project)

Whether node names a speaker project no longer holds.

Distinguishes "nobody in particular is speaking" – a real editorial answer, and the common one for narration – from "the character who said this has been deleted", which is a defect and is reported as one. Both make speakerName empty when there is no display name to fall back on, so a caller that wants to mark the second asks this.

QString ew::app::branching::speakerName(const ew::core::branching::BranchNode &node, const ew::core::project::Project &project)

What node's speaker is called, resolved against project.

The author's display name where there is one, otherwise the codex entity's own name, and empty when nobody in particular is speaking – or when the entity has been deleted and no display name stands in for it.

The display name wins. It is what a reader is told: "the hooded figure" is the right answer on the canvas, in a transcript and in a translator's context pane before the reveal, and the character's real name is the wrong one in all three.

One resolver, three callers. The graph, the playthrough transcript and the localisation export each need this answer, and three copies of the rule is three chances for a panel to disagree with a transcript about who said a line.