diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0133691 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Martino Ferrari + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 902c836..e439b7b 100644 --- a/README.md +++ b/README.md @@ -139,8 +139,10 @@ them, because its adapters are off and 11 cases need an adapter target (8 in ## Licence and third-party provenance -- **This library** ships **no licence file** — there is no `LICENSE`/`COPYING` in the - repository, so the sources carry no granted licence and a distributor must add one. +- **This library** is **MIT licensed**: the full text is in [`LICENSE`](LICENSE), and + every first-party file (C++, Python and shell) carries its SPDX identifier in the file + header — `// SPDX-License-Identifier: MIT` — so the grant travels with each source file, + not just the repository root. - **Adwaita Mono** (the embedded font, `render::EmbeddedMonoFont`) is under **SIL OFL 1.1**, committed verbatim at [`licences/OFL-1.1.txt`](licences/OFL-1.1.txt). The backend class is named neutrally (`EmbeddedMonoFont`, not "Adwaita Mono") because OFL reserves diff --git a/adapters/glfw/glfw_host.cpp b/adapters/glfw/glfw_host.cpp index 46c56e7..fcc2a34 100644 --- a/adapters/glfw/glfw_host.cpp +++ b/adapters/glfw/glfw_host.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include // Before GLFW's header, so it does not include : that header's macros diff --git a/adapters/glfw/glfw_host.hpp b/adapters/glfw/glfw_host.hpp index 105219e..1b1f65b 100644 --- a/adapters/glfw/glfw_host.hpp +++ b/adapters/glfw/glfw_host.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/adapters/gtk4/gtk_input.hpp b/adapters/gtk4/gtk_input.hpp index 462a7d4..54e0c06 100644 --- a/adapters/gtk4/gtk_input.hpp +++ b/adapters/gtk4/gtk_input.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/adapters/gtk4/gtk_plot_area.cpp b/adapters/gtk4/gtk_plot_area.cpp index dcfd3ad..2f7ebb0 100644 --- a/adapters/gtk4/gtk_plot_area.cpp +++ b/adapters/gtk4/gtk_plot_area.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/adapters/gtk4/gtk_plot_area.hpp b/adapters/gtk4/gtk_plot_area.hpp index 44d2251..a937398 100644 --- a/adapters/gtk4/gtk_plot_area.hpp +++ b/adapters/gtk4/gtk_plot_area.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/adapters/imgui/imgui_plot.cpp b/adapters/imgui/imgui_plot.cpp index ce70da9..1ad5c8c 100644 --- a/adapters/imgui/imgui_plot.cpp +++ b/adapters/imgui/imgui_plot.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/adapters/imgui/imgui_plot.hpp b/adapters/imgui/imgui_plot.hpp index f4b1585..e847754 100644 --- a/adapters/imgui/imgui_plot.hpp +++ b/adapters/imgui/imgui_plot.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/adapters/qt6/qt_plot_widget.cpp b/adapters/qt6/qt_plot_widget.cpp index ab457e0..5511068 100644 --- a/adapters/qt6/qt_plot_widget.cpp +++ b/adapters/qt6/qt_plot_widget.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/adapters/qt6/qt_plot_widget.hpp b/adapters/qt6/qt_plot_widget.hpp index e45c468..376dd73 100644 --- a/adapters/qt6/qt_plot_widget.hpp +++ b/adapters/qt6/qt_plot_widget.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once // The plot headers come first, and must. Qt's reaches diff --git a/adapters/qt6/qt_pointer.hpp b/adapters/qt6/qt_pointer.hpp index da99d58..eedc2e6 100644 --- a/adapters/qt6/qt_pointer.hpp +++ b/adapters/qt6/qt_pointer.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/examples/glfw_demo.cpp b/examples/glfw_demo.cpp index 52bd38d..77e7410 100644 --- a/examples/glfw_demo.cpp +++ b/examples/glfw_demo.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The reference application: the whole library running as a real program, fed by // a 1 MS/s producer thread through the GLFW adapter. // diff --git a/examples/gtk_demo.cpp b/examples/gtk_demo.cpp index 0df94f1..5cffe54 100644 --- a/examples/gtk_demo.cpp +++ b/examples/gtk_demo.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The GTK4 application: the same 1 MS/s stream the other demos draw, as the // content of a GtkApplicationWindow whose header bar carries its own "Fit" // button, with GTK drawing the window chrome around a plot the area renders into diff --git a/examples/imgui_demo.cpp b/examples/imgui_demo.cpp index 0a4c5fd..55b5199 100644 --- a/examples/imgui_demo.cpp +++ b/examples/imgui_demo.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The Dear ImGui application: the same stream the GLFW demo draws, embedded as a // widget inside an ImGui window that also owns a few controls, with ImGui drawing // its own chrome into the same framebuffer. diff --git a/examples/multiplot_demo.cpp b/examples/multiplot_demo.cpp index a0b523e..e3b8a7a 100644 --- a/examples/multiplot_demo.cpp +++ b/examples/multiplot_demo.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The multi-plot application: three plots stacked in one `Figure`, sharing one x // axis, each carrying its own signals and its own legend. // diff --git a/examples/qt_demo.cpp b/examples/qt_demo.cpp index 71661a3..513eb6f 100644 --- a/examples/qt_demo.cpp +++ b/examples/qt_demo.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The Qt application: the same 1 MS/s stream the other demos draw, as the central // widget of a QMainWindow that also carries its own toolbar, with Qt drawing the // window chrome around a plot the widget renders into its own framebuffer. diff --git a/include/plot/core/color.hpp b/include/plot/core/color.hpp index c25911c..f9cfd25 100644 --- a/include/plot/core/color.hpp +++ b/include/plot/core/color.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/core/rect.hpp b/include/plot/core/rect.hpp index 1fe2d84..0dac915 100644 --- a/include/plot/core/rect.hpp +++ b/include/plot/core/rect.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/core/span.hpp b/include/plot/core/span.hpp index fec04c1..4e96ffd 100644 --- a/include/plot/core/span.hpp +++ b/include/plot/core/span.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/core/status.hpp b/include/plot/core/status.hpp index 043ffa8..85b5d7a 100644 --- a/include/plot/core/status.hpp +++ b/include/plot/core/status.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/core/types.hpp b/include/plot/core/types.hpp index abf3972..8cb6aa6 100644 --- a/include/plot/core/types.hpp +++ b/include/plot/core/types.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/data/array_series.hpp b/include/plot/data/array_series.hpp index 9019d07..72b3ef1 100644 --- a/include/plot/data/array_series.hpp +++ b/include/plot/data/array_series.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/data/detail/cover_count.hpp b/include/plot/data/detail/cover_count.hpp index 3c0604e..1ee2747 100644 --- a/include/plot/data/detail/cover_count.hpp +++ b/include/plot/data/detail/cover_count.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #ifdef PLOT_PYRAMID_COUNT_COVERS diff --git a/include/plot/data/detail/merge_count.hpp b/include/plot/data/detail/merge_count.hpp index 0612f72..601551d 100644 --- a/include/plot/data/detail/merge_count.hpp +++ b/include/plot/data/detail/merge_count.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #ifdef PLOT_PYRAMID_COUNT_MERGES diff --git a/include/plot/data/minmax_pyramid.hpp b/include/plot/data/minmax_pyramid.hpp index e305951..f227259 100644 --- a/include/plot/data/minmax_pyramid.hpp +++ b/include/plot/data/minmax_pyramid.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/data/ring_buffer.hpp b/include/plot/data/ring_buffer.hpp index a8b77db..af0fa06 100644 --- a/include/plot/data/ring_buffer.hpp +++ b/include/plot/data/ring_buffer.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/data/series.hpp b/include/plot/data/series.hpp index 493a25c..ebcdcbb 100644 --- a/include/plot/data/series.hpp +++ b/include/plot/data/series.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/data/stream_series.hpp b/include/plot/data/stream_series.hpp index 618a322..4ee96e0 100644 --- a/include/plot/data/stream_series.hpp +++ b/include/plot/data/stream_series.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/gl/api.hpp b/include/plot/gl/api.hpp index 8d91a33..c318600 100644 --- a/include/plot/gl/api.hpp +++ b/include/plot/gl/api.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/gl/caps.hpp b/include/plot/gl/caps.hpp index 864c512..f2953a8 100644 --- a/include/plot/gl/caps.hpp +++ b/include/plot/gl/caps.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/gl/handle.hpp b/include/plot/gl/handle.hpp index 04ddf78..097d126 100644 --- a/include/plot/gl/handle.hpp +++ b/include/plot/gl/handle.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/gl/loader.hpp b/include/plot/gl/loader.hpp index abcafb0..0a82889 100644 --- a/include/plot/gl/loader.hpp +++ b/include/plot/gl/loader.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/input/controller.hpp b/include/plot/input/controller.hpp index 8919f27..deb888a 100644 --- a/include/plot/input/controller.hpp +++ b/include/plot/input/controller.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/input/events.hpp b/include/plot/input/events.hpp index f5ea31c..f807e52 100644 --- a/include/plot/input/events.hpp +++ b/include/plot/input/events.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/math/mat3.hpp b/include/plot/math/mat3.hpp index 73256cd..4f7b003 100644 --- a/include/plot/math/mat3.hpp +++ b/include/plot/math/mat3.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/math/transform.hpp b/include/plot/math/transform.hpp index 1d540cb..9b61390 100644 --- a/include/plot/math/transform.hpp +++ b/include/plot/math/transform.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/math/vec2.hpp b/include/plot/math/vec2.hpp index e144dc1..f58d0ba 100644 --- a/include/plot/math/vec2.hpp +++ b/include/plot/math/vec2.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/plot.hpp b/include/plot/plot.hpp index 6ab53a7..30bf0f6 100644 --- a/include/plot/plot.hpp +++ b/include/plot/plot.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once /// Umbrella header: pulls in every public component of the plot library, in diff --git a/include/plot/plot/annotation.hpp b/include/plot/plot/annotation.hpp index cc433b8..9651cf8 100644 --- a/include/plot/plot/annotation.hpp +++ b/include/plot/plot/annotation.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/plot/axis.hpp b/include/plot/plot/axis.hpp index 411f259..0325a7b 100644 --- a/include/plot/plot/axis.hpp +++ b/include/plot/plot/axis.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/plot/crosshair.hpp b/include/plot/plot/crosshair.hpp index f801667..2f881c1 100644 --- a/include/plot/plot/crosshair.hpp +++ b/include/plot/plot/crosshair.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/plot/cursor.hpp b/include/plot/plot/cursor.hpp index 502aab2..f3fe6e2 100644 --- a/include/plot/plot/cursor.hpp +++ b/include/plot/plot/cursor.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/plot/detail/measure_count.hpp b/include/plot/plot/detail/measure_count.hpp index 0dfdb0d..802d3d5 100644 --- a/include/plot/plot/detail/measure_count.hpp +++ b/include/plot/plot/detail/measure_count.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #ifdef PLOT_COUNT_MEASURE_RECOMPUTES diff --git a/include/plot/plot/figure.hpp b/include/plot/plot/figure.hpp index af1ce1f..b91c145 100644 --- a/include/plot/plot/figure.hpp +++ b/include/plot/plot/figure.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/plot/grid.hpp b/include/plot/plot/grid.hpp index 454de0d..3d6f2ff 100644 --- a/include/plot/plot/grid.hpp +++ b/include/plot/plot/grid.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/plot/legend.hpp b/include/plot/plot/legend.hpp index b189907..682b51d 100644 --- a/include/plot/plot/legend.hpp +++ b/include/plot/plot/legend.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/plot/measure.hpp b/include/plot/plot/measure.hpp index 481fbee..f919a7b 100644 --- a/include/plot/plot/measure.hpp +++ b/include/plot/plot/measure.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/plot/plot.hpp b/include/plot/plot/plot.hpp index c5116dd..5c28ac3 100644 --- a/include/plot/plot/plot.hpp +++ b/include/plot/plot/plot.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/plot/region.hpp b/include/plot/plot/region.hpp index ada79c6..c74e5ac 100644 --- a/include/plot/plot/region.hpp +++ b/include/plot/plot/region.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/plot/ticks.hpp b/include/plot/plot/ticks.hpp index 55b4233..ef39642 100644 --- a/include/plot/plot/ticks.hpp +++ b/include/plot/plot/ticks.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/plot/trace.hpp b/include/plot/plot/trace.hpp index e1a867d..536d48f 100644 --- a/include/plot/plot/trace.hpp +++ b/include/plot/plot/trace.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/render/buffer.hpp b/include/plot/render/buffer.hpp index 6b65de2..dff30dc 100644 --- a/include/plot/render/buffer.hpp +++ b/include/plot/render/buffer.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/render/detail/ring_stats.hpp b/include/plot/render/detail/ring_stats.hpp index 860d589..21dca67 100644 --- a/include/plot/render/detail/ring_stats.hpp +++ b/include/plot/render/detail/ring_stats.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #ifdef PLOT_RING_STATS diff --git a/include/plot/render/detail/text_scale.hpp b/include/plot/render/detail/text_scale.hpp index 2f5ede4..bada9ee 100644 --- a/include/plot/render/detail/text_scale.hpp +++ b/include/plot/render/detail/text_scale.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/render/embedded_mono_font.hpp b/include/plot/render/embedded_mono_font.hpp index eb508b9..a598bd4 100644 --- a/include/plot/render/embedded_mono_font.hpp +++ b/include/plot/render/embedded_mono_font.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/render/primitives.hpp b/include/plot/render/primitives.hpp index 8c1605a..cc4c59f 100644 --- a/include/plot/render/primitives.hpp +++ b/include/plot/render/primitives.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/render/program.hpp b/include/plot/render/program.hpp index 8a1090f..79ecb40 100644 --- a/include/plot/render/program.hpp +++ b/include/plot/render/program.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/render/renderer.hpp b/include/plot/render/renderer.hpp index 1182483..3ee8817 100644 --- a/include/plot/render/renderer.hpp +++ b/include/plot/render/renderer.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/render/shaders.hpp b/include/plot/render/shaders.hpp index d130cc0..28a493d 100644 --- a/include/plot/render/shaders.hpp +++ b/include/plot/render/shaders.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once namespace plot::render { diff --git a/include/plot/render/style.hpp b/include/plot/render/style.hpp index b8509d4..ba2e43b 100644 --- a/include/plot/render/style.hpp +++ b/include/plot/render/style.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/render/text.hpp b/include/plot/render/text.hpp index ae3a082..88ffb98 100644 --- a/include/plot/render/text.hpp +++ b/include/plot/render/text.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include diff --git a/include/plot/render/text_atlas.hpp b/include/plot/render/text_atlas.hpp index 6a135de..a748516 100644 --- a/include/plot/render/text_atlas.hpp +++ b/include/plot/render/text_atlas.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/render/vertex_array.hpp b/include/plot/render/vertex_array.hpp index dd8f651..2e53aa1 100644 --- a/include/plot/render/vertex_array.hpp +++ b/include/plot/render/vertex_array.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/include/plot/text/true_type_font.hpp b/include/plot/text/true_type_font.hpp index faf96ac..c19ca85 100644 --- a/include/plot/text/true_type_font.hpp +++ b/include/plot/text/true_type_font.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/src/core/status.cpp b/src/core/status.cpp index d70432c..dc3cdaf 100644 --- a/src/core/status.cpp +++ b/src/core/status.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include namespace plot { diff --git a/src/data/array_series.cpp b/src/data/array_series.cpp index b21c3c1..a366d89 100644 --- a/src/data/array_series.cpp +++ b/src/data/array_series.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/data/minmax_pyramid.cpp b/src/data/minmax_pyramid.cpp index 8300d12..7bf1fb3 100644 --- a/src/data/minmax_pyramid.cpp +++ b/src/data/minmax_pyramid.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include #include diff --git a/src/data/series.cpp b/src/data/series.cpp index c8eb3c7..8fc0ec3 100644 --- a/src/data/series.cpp +++ b/src/data/series.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/data/stream_series.cpp b/src/data/stream_series.cpp index 42add8e..d86f0a2 100644 --- a/src/data/stream_series.cpp +++ b/src/data/stream_series.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/gl/handle.cpp b/src/gl/handle.cpp index 5ddf280..5cbbb6a 100644 --- a/src/gl/handle.cpp +++ b/src/gl/handle.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/gl/loader.cpp b/src/gl/loader.cpp index 176e552..3ac3781 100644 --- a/src/gl/loader.cpp +++ b/src/gl/loader.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/input/controller.cpp b/src/input/controller.cpp index 97deb01..17b9f13 100644 --- a/src/input/controller.cpp +++ b/src/input/controller.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/math/transform.cpp b/src/math/transform.cpp index 43fb93e..095c054 100644 --- a/src/math/transform.cpp +++ b/src/math/transform.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include namespace plot::math { diff --git a/src/plot/axis.cpp b/src/plot/axis.cpp index 5ccffb7..1e60223 100644 --- a/src/plot/axis.cpp +++ b/src/plot/axis.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include namespace plot { diff --git a/src/plot/figure.cpp b/src/plot/figure.cpp index 88dfa69..2134c8a 100644 --- a/src/plot/figure.cpp +++ b/src/plot/figure.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/plot/grid.cpp b/src/plot/grid.cpp index 9489f9b..26d21e5 100644 --- a/src/plot/grid.cpp +++ b/src/plot/grid.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/plot/measure.cpp b/src/plot/measure.cpp index 98c4b3a..1b16cb6 100644 --- a/src/plot/measure.cpp +++ b/src/plot/measure.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/plot/plot.cpp b/src/plot/plot.cpp index 8eaba7b..0f2026b 100644 --- a/src/plot/plot.cpp +++ b/src/plot/plot.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/plot/ticks.cpp b/src/plot/ticks.cpp index ae6791e..b6ea165 100644 --- a/src/plot/ticks.cpp +++ b/src/plot/ticks.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/render/buffer.cpp b/src/render/buffer.cpp index 859761f..41f335a 100644 --- a/src/render/buffer.cpp +++ b/src/render/buffer.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/render/embedded_mono_font.cpp b/src/render/embedded_mono_font.cpp index 6cfa858..b25c5ed 100644 --- a/src/render/embedded_mono_font.cpp +++ b/src/render/embedded_mono_font.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari +// // GENERATED FILE -- do not edit by hand. // // Regenerate with: tools/fonts/gen_atlas.py diff --git a/src/render/primitives.cpp b/src/render/primitives.cpp index c8c90c9..ea92f22 100644 --- a/src/render/primitives.cpp +++ b/src/render/primitives.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/render/program.cpp b/src/render/program.cpp index 8a70a7f..57abae8 100644 --- a/src/render/program.cpp +++ b/src/render/program.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/render/renderer.cpp b/src/render/renderer.cpp index 0532887..22e7f21 100644 --- a/src/render/renderer.cpp +++ b/src/render/renderer.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/render/shaders.cpp b/src/render/shaders.cpp index 0bb1147..cbce72f 100644 --- a/src/render/shaders.cpp +++ b/src/render/shaders.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include // Both pipelines are `#version 330 core` and stay untouched by the upload diff --git a/src/render/text.cpp b/src/render/text.cpp index b2a9dc1..a5a51a7 100644 --- a/src/render/text.cpp +++ b/src/render/text.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include namespace plot::render { diff --git a/src/render/text_atlas.cpp b/src/render/text_atlas.cpp index 50fb978..848836d 100644 --- a/src/render/text_atlas.cpp +++ b/src/render/text_atlas.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/render/vertex_array.cpp b/src/render/vertex_array.cpp index c72515b..564114a 100644 --- a/src/render/vertex_array.cpp +++ b/src/render/vertex_array.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include #include diff --git a/src/text/stb_truetype_impl.cpp b/src/text/stb_truetype_impl.cpp index df9125b..379bb9d 100644 --- a/src/text/stb_truetype_impl.cpp +++ b/src/text/stb_truetype_impl.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The vendored rasteriser's single implementation unit: the one translation unit // in this project that defines STB_TRUETYPE_IMPLEMENTATION, so the ~5000-line // stb_truetype.h is compiled exactly once, into the optional plot_font_ttf diff --git a/src/text/true_type_font.cpp b/src/text/true_type_font.cpp index 5d285f4..c34b93f 100644 --- a/src/text/true_type_font.cpp +++ b/src/text/true_type_font.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The optional TrueType backend: the one place in the project that parses a font // file at run time, and the only consumer of the vendored third_party/stb_truetype.h // (see src/text/stb_truetype_impl.cpp for its single implementation unit, and diff --git a/tests/egl_headless.cpp b/tests/egl_headless.cpp index e166a08..1ed551b 100644 --- a/tests/egl_headless.cpp +++ b/tests/egl_headless.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include "egl_headless.hpp" #include diff --git a/tests/egl_headless.hpp b/tests/egl_headless.hpp index d51da7f..e134211 100644 --- a/tests/egl_headless.hpp +++ b/tests/egl_headless.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/tests/harness.hpp b/tests/harness.hpp index 4e1aa89..82f7bb5 100644 --- a/tests/harness.hpp +++ b/tests/harness.hpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #pragma once #include #include diff --git a/tests/main.cpp b/tests/main.cpp index d9f0b7b..c2bd730 100644 --- a/tests/main.cpp +++ b/tests/main.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include "harness.hpp" int main() { return plottest::run_all(); } diff --git a/tests/test_controller.cpp b/tests/test_controller.cpp index aae07ce..f0eb2a9 100644 --- a/tests/test_controller.cpp +++ b/tests/test_controller.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include "harness.hpp" #include diff --git a/tests/test_figure.cpp b/tests/test_figure.cpp index 3ab9d8e..04e45c1 100644 --- a/tests/test_figure.cpp +++ b/tests/test_figure.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // `Figure`: several plots stacked in one column, sharing one x range. // // The layout cases pin the geometry the renderer draws with -- the row rects, the diff --git a/tests/test_gl_context.cpp b/tests/test_gl_context.cpp index 02fceae..1604f5f 100644 --- a/tests/test_gl_context.cpp +++ b/tests/test_gl_context.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include "harness.hpp" #include "egl_headless.hpp" diff --git a/tests/test_glfw_host.cpp b/tests/test_glfw_host.cpp index 5cdac33..ede4089 100644 --- a/tests/test_glfw_host.cpp +++ b/tests/test_glfw_host.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The GLFW host's event routing in figure mode: which row's controller a pointer pixel // reaches. // diff --git a/tests/test_gtk_input.cpp b/tests/test_gtk_input.cpp index 5f79530..e221738 100644 --- a/tests/test_gtk_input.cpp +++ b/tests/test_gtk_input.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The GTK adapter's input translation, driven directly. // // Four pieces of it are this project's logic and not a toolkit's, and none of them diff --git a/tests/test_imgui_widget.cpp b/tests/test_imgui_widget.cpp index 410dd35..16f2184 100644 --- a/tests/test_imgui_widget.cpp +++ b/tests/test_imgui_widget.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The Dear ImGui adapter's own logic, pinned against real ImGui frames on the // tests' surfaceless EGL context -- no window, no display server. // diff --git a/tests/test_measure.cpp b/tests/test_measure.cpp index f55711f..2692e9e 100644 --- a/tests/test_measure.cpp +++ b/tests/test_measure.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include "harness.hpp" #include #include diff --git a/tests/test_minmax_pyramid.cpp b/tests/test_minmax_pyramid.cpp index fd5cf2f..2dc8610 100644 --- a/tests/test_minmax_pyramid.cpp +++ b/tests/test_minmax_pyramid.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include "harness.hpp" #include #include diff --git a/tests/test_plot.cpp b/tests/test_plot.cpp index 1da19fd..9dd80d6 100644 --- a/tests/test_plot.cpp +++ b/tests/test_plot.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include "harness.hpp" #include #include diff --git a/tests/test_primitives.cpp b/tests/test_primitives.cpp index 5a9e466..0124271 100644 --- a/tests/test_primitives.cpp +++ b/tests/test_primitives.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // CPU-side contract of the render layer: the staging batches that feed the // instanced line and text pipelines, and the embedded font's metrics and atlas. // Nothing here touches GL, so it runs on any machine that can build the tests. diff --git a/tests/test_qt_pointer.cpp b/tests/test_qt_pointer.cpp index 36d9018..8b9cd2e 100644 --- a/tests/test_qt_pointer.cpp +++ b/tests/test_qt_pointer.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The Qt adapter's pointer translation, driven directly. The widget's cached // pointer anchor is a plain value with no toolkit dependency (see // adapters/qt6/qt_pointer.hpp) precisely so the one thing a screenshot cannot show diff --git a/tests/test_render_smoke.cpp b/tests/test_render_smoke.cpp index f57dabe..af8830b 100644 --- a/tests/test_render_smoke.cpp +++ b/tests/test_render_smoke.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The integration test: the whole stack on the real driver. A 1M-sample series, // the plot layer's layout/ticks/grid, the renderer's visible-range LOD selection // and both vertex-transfer strategies, all asserted by reading pixels back from diff --git a/tests/test_ring_buffer.cpp b/tests/test_ring_buffer.cpp index 4635992..f0a2286 100644 --- a/tests/test_ring_buffer.cpp +++ b/tests/test_ring_buffer.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include "harness.hpp" #include diff --git a/tests/test_series.cpp b/tests/test_series.cpp index fc6d5c6..c203c85 100644 --- a/tests/test_series.cpp +++ b/tests/test_series.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include "harness.hpp" #include #include diff --git a/tests/test_ticks.cpp b/tests/test_ticks.cpp index dbab83c..b4d3cd7 100644 --- a/tests/test_ticks.cpp +++ b/tests/test_ticks.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include "harness.hpp" #include #include diff --git a/tests/test_transform.cpp b/tests/test_transform.cpp index 2b960dd..60c850b 100644 --- a/tests/test_transform.cpp +++ b/tests/test_transform.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + #include "harness.hpp" #include diff --git a/tests/test_true_type_font.cpp b/tests/test_true_type_font.cpp index a0e21ce..8800732 100644 --- a/tests/test_true_type_font.cpp +++ b/tests/test_true_type_font.cpp @@ -1,3 +1,6 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2026 Martino Ferrari + // The optional runtime-font backend, on the real driver and on the real archive: // what a host gets when it points `plot::text::TrueTypeFont` at a font file. // diff --git a/tools/coverage.sh b/tools/coverage.sh index a09a020..8662df6 100755 --- a/tools/coverage.sh +++ b/tools/coverage.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# SPDX-License-Identifier: MIT +# SPDX-FileCopyrightText: 2026 Martino Ferrari + # # Reproducible coverage for src/**, with a floor. # diff --git a/tools/coverage_floor.py b/tools/coverage_floor.py index 4dfc5aa..c5fa28c 100755 --- a/tools/coverage_floor.py +++ b/tools/coverage_floor.py @@ -1,4 +1,7 @@ #!/usr/bin/env python3 +# SPDX-License-Identifier: MIT +# SPDX-FileCopyrightText: 2026 Martino Ferrari + """Gate an lcov report for src/** against the project's coverage floors. The floors are the contract made visible in docs/coverage.md: every file under diff --git a/tools/fonts/gen_atlas.py b/tools/fonts/gen_atlas.py index 1f9a1c6..f8837d8 100755 --- a/tools/fonts/gen_atlas.py +++ b/tools/fonts/gen_atlas.py @@ -1,4 +1,7 @@ #!/usr/bin/env python3 +# SPDX-License-Identifier: MIT +# SPDX-FileCopyrightText: 2026 Martino Ferrari + """Bake the embedded mono font's anti-aliased atlas, at authoring time. Reads a TrueType/OpenType file and writes a C++ translation unit holding a @@ -398,6 +401,9 @@ def emit(geometry, provenance): lines = [] add = lines.append + add("// SPDX-License-Identifier: MIT") + add("// SPDX-FileCopyrightText: 2026 Martino Ferrari") + add("//") add("// GENERATED FILE -- do not edit by hand.") add("//") add(f"// Regenerate with: {SCRIPT}")