Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions +labkit/+ui/+tool/private/addOrInsertAnchor.m
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
% Private anchor-editor insertion helper. Expected caller:
% labkit.ui.tool.anchorEditor. Inputs are existing and candidate image-pixel
% anchor coordinates plus axes/image/style constraints; output is the updated
% N-by-2 anchor array. No graphics or app state are mutated.
function points = addOrInsertAnchor(points, newPoint, ax, imageSize, curveStyle, closed, maxPoints)
%ADDORINSERTANCHOR Apply anchor insertion policy for createAnchorCurveEditor.
%
Expand Down
4 changes: 4 additions & 0 deletions +labkit/+ui/+tool/private/anchorCurvePoints.m
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
% Private anchor-editor path builder. Expected caller:
% labkit.ui.tool.anchorEditor and insertion helpers. Inputs are N-by-2
% image-pixel anchors, image size, curve style, and closed/open mode; outputs
% are display curve samples and segment-owner indices. No side effects.
function [curve, owners] = anchorCurvePoints(points, imageSize, curveStyle, closed)
%ANCHORCURVEPOINTS Build displayed anchor path samples for curve editors.
%
Expand Down
4 changes: 4 additions & 0 deletions +labkit/+ui/+tool/private/createLabeledDropdown.m
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
% Private scale-bar/tool control helper. Expected caller: labkit.ui.tool
% private panels. Inputs are a parent grid, visible label text, and uidropdown
% name/value arguments; outputs are label and dropdown handles. Side effects
% are limited to creating UI controls under the parent.
function [lbl, dd] = createLabeledDropdown(parent, labelText, varargin)
%CREATELABELEDDROPDOWN Create a right-aligned label followed by a dropdown.
%
Expand Down
4 changes: 4 additions & 0 deletions +labkit/+ui/+tool/private/createLabeledEditField.m
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
% Private scale-bar/tool control helper. Expected caller: labkit.ui.tool
% private panels. Inputs are a parent grid, visible label text, edit style,
% and uieditfield name/value arguments; outputs are label and field handles.
% Side effects are limited to creating UI controls under the parent.
function [lbl, field] = createLabeledEditField(parent, labelText, style, varargin)
%CREATELABELEDEDITFIELD Create a right-aligned label followed by an edit field.
%
Expand Down
4 changes: 4 additions & 0 deletions +labkit/+ui/+tool/private/createLabeledSpinner.m
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
% Private scale-bar/tool control helper. Expected caller: labkit.ui.tool
% private panels. Inputs are a parent grid, visible label text, and uispinner
% name/value arguments; outputs are label and spinner handles. Side effects
% are limited to creating UI controls under the parent.
function [lbl, spinner] = createLabeledSpinner(parent, labelText, varargin)
%CREATELABELEDSPINNER Create a right-aligned label followed by a spinner.
%
Expand Down
4 changes: 4 additions & 0 deletions +labkit/+ui/+tool/private/createReadOnlyInfoRow.m
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
% Private scale-bar/tool readout helper. Expected caller: labkit.ui.tool
% private panels. Inputs are a parent grid, target row, and visible label;
% outputs are a read-only text field and label handles. Side effects are
% limited to creating and placing UI controls under the parent.
function [field, lbl] = createReadOnlyInfoRow(parent, row, labelText)
%CREATEREADONLYINFOROW Create a labeled read-only text field row.
%
Expand Down
4 changes: 4 additions & 0 deletions +labkit/+ui/+tool/private/createReadOnlyTextField.m
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
% Private scale-bar/tool readout helper. Expected caller: labkit.ui.tool
% private panels. Inputs are a parent grid and uieditfield name/value
% arguments; output is a read-only text field handle. Side effects are limited
% to creating one UI control under the parent.
function field = createReadOnlyTextField(parent, varargin)
%CREATEREADONLYTEXTFIELD Create a read-only single-line text field.
%
Expand Down
3 changes: 3 additions & 0 deletions +labkit/+ui/+tool/private/defaultScaleBarUnits.m
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
% Private scale-bar unit defaults. Expected caller: labkit.ui.tool scale-bar
% helpers. No inputs; output is the app-neutral unit label order. No side
% effects or app-specific assumptions.
function units = defaultScaleBarUnits()
%DEFAULTSCALEBARUNITS Return the app-neutral scale-bar unit order.
%
Expand Down
4 changes: 4 additions & 0 deletions +labkit/+ui/+tool/private/drawScaleBarOverlay.m
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
% Private scale-bar overlay renderer. Expected caller:
% labkit.ui.tool.scaleBar.renderOverlay. Inputs are target axes and a prepared
% scale-bar spec; output is line/text handles or empty. Side effects are
% limited to adding overlay graphics to the target axes.
function handles = drawScaleBarOverlay(ax, scaleBar)
%DRAWSCALEBAROVERLAY Draw a prepared scale-bar spec onto image axes.
%
Expand Down
4 changes: 4 additions & 0 deletions +labkit/+ui/+tool/private/normalizeScaleBarUnit.m
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
% Private scale-bar unit normalization helper. Expected caller:
% labkit.ui.tool scale-bar panel/calibration code. Inputs are a candidate unit,
% allowed unit labels, and fallback unit; output is a valid string scalar. No
% side effects.
function unitName = normalizeScaleBarUnit(unitName, units, defaultUnit)
%NORMALIZESCALEBARUNIT Normalize a scale-bar unit against allowed UI units.
%
Expand Down
5 changes: 5 additions & 0 deletions +labkit/+ui/+tool/private/scaleBarPanel.m
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
% Private reusable scale-bar control section. Expected caller:
% labkit.ui.tool.scaleBar. Inputs are parent grid, target row, and options
% struct for units, positions, colors, defaults, and callbacks; output is a UI
% handle/method struct. Side effects are limited to creating controls in the
% parent and invoking supplied callbacks from user control changes.
function ui = scaleBarPanel(parent, row, opts)
%CREATESCALEBARPANEL Create reusable scale-bar calibration controls.
%
Expand Down
6 changes: 6 additions & 0 deletions apps/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@ Apps are first-class deliverables. Do not treat them as examples for a hidden pl
builders, app-local IO normalization, and default state/result structs into
focused app-owned packages first, and add tests that call those functions
directly.
- When the wearable ECG Print app is migrated, target
`apps/wearable/ecg_print/+ecg_print/...` with the public command still named
`labkit_ECGPrint_app`; do not create a direct `apps/wearable/+ecg_print`
package.
- After an app-owned helper is extracted, remove same-named local copies from
`+ui/runApp.m` so GUI paths call the tested package helper.
- Do not add new `*Workflow.m` files or app-owned `+core/dispatch.m` string
routers.
- When a public app file grows large, prefer moving GUI-free app-owned calculations, export builders, formatting utilities, deterministic image/signal transforms, and focused control construction into `apps/<family>/<app_slug>/+<app_slug>/...`.
Expand Down
Loading
Loading