Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
motion.hpp File Reference

Agent-first motion observability: sample view geometry, scroll state, and arbitrary scalar values at a chosen FPS, emit epsilon-bounded change-only events with Start/End burst framing, and route them to pluggable sinks (log lines and structured events). More...

#include <pulp/view/geometry.hpp>
#include <cstdint>
#include <functional>
#include <memory>
#include <string>
#include <utility>
#include <vector>

Go to the source code of this file.

Classes

struct  pulp::view::motion::TraceOptions
struct  pulp::view::motion::Provenance
struct  pulp::view::motion::SampleEvent
struct  pulp::view::motion::PublishOptions
struct  pulp::view::motion::FixtureHeader
 Header metadata recorded once at the top of a fixture file. More...
struct  pulp::view::motion::FixtureDiff
 Comparison result from assert_matches. More...
struct  pulp::view::motion::FixtureDiff::Item
struct  pulp::view::motion::FixtureMatchOptions
struct  pulp::view::motion::ScalarSample
 Flatten a fixture's events into a (time, value) series for one (view, metric, component) triple. More...
class  pulp::view::motion::InputRecorder
 Recording handle returned by make_input_recorder. More...
class  pulp::view::motion::TraceHandle
class  pulp::view::motion::TraceBuilder
class  pulp::view::motion::Coordinator
 Process-wide singleton that owns one FrameClock subscription, holds the active trace set, and dispatches sample events to registered sinks. More...

Namespaces

namespace  pulp
namespace  pulp::view
 Hover-cursor tracking for platform window hosts.
namespace  pulp::view::motion

Typedefs

using pulp::view::motion::Sink = std::function<void(const SampleEvent&)>

Enumerations

enum class  pulp::view::motion::GeometrySource { pulp::view::motion::Layout , pulp::view::motion::Presentation }
enum class  pulp::view::motion::GeometrySpace { pulp::view::motion::ViewLocal , pulp::view::motion::ViewGlobal , pulp::view::motion::Window , pulp::view::motion::Screen }
enum class  pulp::view::motion::GeometryProperty {
  pulp::view::motion::MinX , pulp::view::motion::MinY , pulp::view::motion::MaxX , pulp::view::motion::MaxY ,
  pulp::view::motion::MidX , pulp::view::motion::MidY , pulp::view::motion::Width , pulp::view::motion::Height
}
enum class  pulp::view::motion::ScrollProperty {
  pulp::view::motion::ContentOffsetX , pulp::view::motion::ContentOffsetY , pulp::view::motion::VisibleRectMinX , pulp::view::motion::VisibleRectMinY ,
  pulp::view::motion::VisibleRectWidth , pulp::view::motion::VisibleRectHeight , pulp::view::motion::ContentSizeWidth , pulp::view::motion::ContentSizeHeight ,
  pulp::view::motion::InsetTop , pulp::view::motion::InsetBottom , pulp::view::motion::InsetLeft , pulp::view::motion::InsetRight ,
  pulp::view::motion::ScrollableMaxX , pulp::view::motion::ScrollableMaxY
}

Functions

std::string pulp::view::motion::format_line (const SampleEvent &e)
 Render the canonical [PulpMotion][view][metric] ... line for a sample event.
void pulp::view::motion::publish_value (std::string view_name, std::string metric_name, double value, PublishOptions opts={})
 Single-component publish.
void pulp::view::motion::publish_components (std::string view_name, std::string metric_name, std::vector< std::pair< std::string, double > > components, PublishOptions opts={})
 Multi-component publish (e.g., a 2D point or a geometry rect).
void pulp::view::motion::set_ambient_provenance (Provenance p)
void pulp::view::motion::clear_ambient_provenance ()
Provenance pulp::view::motion::current_ambient_provenance ()
std::vector< SampleEvent > pulp::view::motion::load_fixture (const std::string &path)
 Load a fixture file into memory.
FixtureHeader pulp::view::motion::load_fixture_header (const std::string &path)
 Load a fixture's header (schema version + policy + duration_scale).
FixtureDiff pulp::view::motion::assert_matches (const std::vector< SampleEvent > &golden, const std::vector< SampleEvent > &captured, FixtureMatchOptions opts={})
FixtureDiff pulp::view::motion::assert_matches (const FixtureHeader &golden_header, const std::vector< SampleEvent > &golden, const FixtureHeader &captured_header, const std::vector< SampleEvent > &captured, FixtureMatchOptions opts={})
 Overload that also compares fixture headers.
std::vector< ScalarSample > pulp::view::motion::extract_scalar (const std::vector< SampleEvent > &events, std::string_view view_name, std::string_view metric_name, std::string_view component_name="value")
bool pulp::view::motion::is_monotonic (const std::vector< ScalarSample > &samples, double epsilon=1e-6)
 Strict monotonicity check with epsilon.
double pulp::view::motion::settling_time_seconds (const std::vector< ScalarSample > &samples, double epsilon=1e-6)
 Time from first change above epsilon to last change above epsilon.
double pulp::view::motion::overshoot (const std::vector< ScalarSample > &samples, double epsilon=1e-6)
 Overshoot relative to the final value: max excursion beyond the final value's direction from the first stable region.
double pulp::view::motion::start_delay_seconds (const std::vector< ScalarSample > &samples, double epsilon=1e-6)
 Time from t0 to the first change above epsilon.
double pulp::view::motion::frame_jitter_seconds (const std::vector< ScalarSample > &samples)
 Standard deviation of inter-sample intervals — proxy for frame-pacing jitter when the sampler is run at a fixed FPS.
double pulp::view::motion::final_value (const std::vector< ScalarSample > &samples)
 Returns the last sample's value, or NaN when empty.
double pulp::view::motion::local_step_outlier_ratio (const std::vector< ScalarSample > &samples, std::size_t window_radius=3, double epsilon=1e-9)
 Local-step outlier ratio.
Sink pulp::view::motion::make_log_sink ()
 Sink that writes one log line per event via pulp::runtime::log_debug.
Sink pulp::view::motion::make_buffer_sink (std::vector< SampleEvent > *buffer)
 Sink that appends events to a caller-owned buffer.
Sink pulp::view::motion::make_fixture_sink (std::string path)
 Sink that appends each SampleEvent as a JSONL line to path.
int pulp::view::motion::replay_fixture (const std::string &path, const Sink &sink)
 Read a fixture file from disk and dispatch each event to sink.
InputRecorder pulp::view::motion::make_input_recorder (std::string path)
 Install a fixture sink at path and enable simulate_* recording.
int pulp::view::motion::replay_inputs (const std::string &path, View &root_view, FrameClock &frame_clock)
 Read a fixture file, find each Input event, resolve view_id from root_view for diagnostics, and re-dispatch the matching View::simulate_* through root_view.
void pulp::view::motion::record_simulated_input (const std::string &input_kind, const std::string &view_id, std::vector< std::pair< std::string, double > > coords)
 Process-wide entry point called by View::simulate_* when input recording is active.
bool pulp::view::motion::input_recording_enabled () noexcept
 True while at least one InputRecorder is alive.

Variables

constexpr int pulp::view::motion::kFixtureSchemaVersion = 2
constexpr int pulp::view::motion::kInvalidFixtureSchemaVersion = 0
 Sentinel for a default-constructed / unrecognised fixture header.

Detailed Description

Agent-first motion observability: sample view geometry, scroll state, and arbitrary scalar values at a chosen FPS, emit epsilon-bounded change-only events with Start/End burst framing, and route them to pluggable sinks (log lines and structured events).

Off by default; activate with Coordinator::set_tracing_enabled(true).