2020-06-18 |
Chris Cannam |
Include the header row in the example output after all - it's less confusing I think to have it displayed (but e.g. italicised) than to have it appear and disappear
csv-import-headers
|
2020-06-17 |
Chris Cannam |
Detect presence of header row in CSV format guesser; use headings to inform our guesses about column purposes; test this
csv-import-headers
|
2020-06-16 |
Chris Cannam |
Merge from default branch
startup-timing
|
2020-06-16 |
Chris Cannam |
Add record-mono preference
|
2020-06-11 |
Chris Cannam |
CSV reader tests and fixes - avoid creating null events for lines in which the timings could not be read
|
2020-06-11 |
Chris Cannam |
If duration < 0, swap start time and duration rather than throwing an exception - this is too deep to be throwing an exception here, we end up with bugs like #1989 (Crash when trying to import CSV file with certain unexpected data in it) - and the meaning of negative duration is not actually ambiguous
|
2020-06-03 |
Chris Cannam |
Make it possible to check whether the transforms have been populated yet
startup-timing
|
2020-06-03 |
Chris Cannam |
Add timings to debug output
startup-timing
|
2020-05-29 |
Chris Cannam |
Comment only
|
2020-05-22 |
Chris Cannam |
Permit setting completion directly on the alignment model, if we aren't using a transform to populate the path source but are instead going to set the path directly after completion
|
2020-05-21 |
Chris Cannam |
Merge
|
2020-05-21 |
Chris Cannam |
Comment only
|
2020-05-18 |
Chris Cannam |
Avoid more recent Qt api, for older platform package builds
|
2020-05-14 |
Chris Cannam |
Use cancellable serialiser; add some more profiling points
|
2020-05-14 |
Chris Cannam |
Make Serialiser cancellable while waiting for its lock
|
2020-05-14 |
Chris Cannam |
Print results in the opposite order, so most relevant ones are at the end of the listing
|
2020-05-11 |
Chris Cannam |
Pull out text-document check; it's useful elsewhere
|
2020-05-11 |
Chris Cannam |
Add support for doubling escapes for quotes in quoted texts in CSV-like formats on import (similar to how we, and the relevant RFC, do escaping on export now)
|
2020-05-06 |
Chris Cannam |
Add isSupported
|
2020-04-30 |
Chris Cannam |
Be more cautious about firing up an RDF file parser to identify a document - don't do it at all if the document is not apparently text
|
2020-04-30 |
Chris Cannam |
Add function (cribbed from Rosegarden source) to check whether a string is valid UTF-8
|
2020-04-29 |
Chris Cannam |
Merge
|
2020-04-29 |
Chris Cannam |
Remove debug output
|
2020-04-23 |
Chris Cannam |
Avoid returning expired pointers
|
2020-04-22 |
Chris Cannam |
Suppress debug
|
2020-04-22 |
Chris Cannam |
Add platform name query
|
2020-04-20 |
Chris Cannam |
Pull out Provider struct
|
2020-04-20 |
Chris Cannam |
Accept more than one library URI for a plugin; consistency checks for packs
|
2020-04-17 |
Chris Cannam |
Retrieve download URL, download type, and "pack" information
|
2020-04-17 |
Chris Cannam |
Ensure search results that match the whole "phrase" get higher scores than any others
|
2020-04-14 |
Chris Cannam |
Add required header
|
2020-04-14 |
Chris Cannam |
Comments
|
2020-04-09 |
Chris Cannam |
Fix out of range access to magnitudes
|
2020-04-09 |
Chris Cannam |
Merge
|
2020-04-09 |
Chris Cannam |
Unify various vectors to our base floatvec_t type; store columns in fft model cache at their desired height so we can return a reference (speeding up the peak-frequency spectrogram in particular)
|
2020-04-08 |
Chris Cannam |
Remove debug output
|
2020-04-06 |
Chris Cannam |
Merge from branch sensible-delimited-data-strings
|
2020-04-06 |
Chris Cannam |
Test CSV quoting
sensible-delimited-data-strings
|
2020-04-03 |
Chris Cannam |
Rewrite all the DelimitedDataString stuff so as to return vectors of individual cell strings rather than having the classes add the delimiters themselves. Rename accordingly to names based on StringExport. Take advantage of this in the CSV writer code so as to properly quote cells that contain delimiter characters.
sensible-delimited-data-strings
|
2020-04-03 |
Chris Cannam |
Merge from branch audio-source-refactor. Various changes to memory management for plugins, ring buffers etc, for safer code further up the stack
|
2020-03-27 |
Chris Cannam |
Add GenericCommand
|
2020-03-20 |
Chris Cannam |
Use shared_ptr for plugin instances throughout
audio-source-refactor
|
2020-03-20 |
Chris Cannam |
Might as well use the aligning allocator here, though it'll make no real difference
audio-source-refactor
|
2020-03-19 |
Chris Cannam |
Use a shared_ptr
audio-source-refactor
|
2020-03-19 |
Chris Cannam |
Make RingBuffer copyable, and simplify a bit
audio-source-refactor
|
2020-03-06 |
Chris Cannam |
Avoid compiler warning
|
2020-03-06 |
Chris Cannam |
Add option to avoid pulling in the WinRT dependency for this very small feature
|
2020-01-28 |
Chris Cannam |
Merge
|
2020-01-28 |
Chris Cannam |
This is distracting in Sonic Annotator
|
2020-01-24 |
Chris Cannam |
Merge from branch background-mode
|
2020-01-24 |
Chris Cannam |
Use slightly lighter version of accent colour in dark mode - it generally seems more appropriate in practice
background-mode
|
2020-01-23 |
Chris Cannam |
Add OSQueryAccentColour
background-mode
|
2020-01-20 |
Chris Cannam |
More sensible name
background-mode
|
2020-01-17 |
Chris Cannam |
Determine whether a dark background is indicated
background-mode
|
2020-01-14 |
Chris Cannam |
Merge from branch csv-export-dialog
|
2020-01-14 |
Chris Cannam |
Overhaul and tidy the export options, and add support for header row
csv-export-dialog
|
2020-01-10 |
Chris Cannam |
Add optional ability to write a header on delimited data output, & to write times in frames
|
2020-01-08 |
Chris Cannam |
Debug tweaks
|
2020-01-08 |
Chris Cannam |
Not virtual
|
2020-01-08 |
Chris Cannam |
Create target model without extents (we now have two separate constructors for this, the second one creates a model with extents even if both are zero)
|
2020-01-08 |
Chris Cannam |
Add Selection::toString for debug purposes
|
2019-11-22 |
Chris Cannam |
Forward getIndexForEvent
|
2019-10-29 |
Chris Cannam |
Comments and debug-related bits
|
2019-10-17 |
Chris Cannam |
OK, so now this pragma provokes a warning in gcc! Guard it with a clang guard
|
2019-10-16 |
Chris Cannam |
Looks like this is clang-only
|
2019-10-16 |
Chris Cannam |
Avoid some compiler warnings
|
2019-10-16 |
Chris Cannam |
Tidy
|
2019-10-14 |
Chris Cannam |
Implement missing TabularModel editing methods. Also made these pure in TabularModel, since almost all subclasses want them and (clearly) forgetting to implement them is a problem!
|
2019-10-10 |
Chris Cannam |
Make static to avoid multiple definitions
|
2019-10-10 |
Chris Cannam |
One last fix to this compatibility function (I hope!)
|
2019-10-10 |
Chris Cannam |
*sigh*
|
2019-10-10 |
Chris Cannam |
OK, that didn't work because of scoping/overload rules. Try this
|
2019-10-10 |
Chris Cannam |
Compatibility with Qt 5.2 (for the Ubuntu 14.04 build)
|
2019-10-01 |
Chris Cannam |
Some work on making Model classes thread-safe in typical use - and documenting this. Some of the implementations are simpler now that EventSeries is thread-safe
|
2019-10-01 |
Chris Cannam |
Fix compile error with non-MSVC compilers
|
2019-09-30 |
Chris Cannam |
Make EventSeries threadsafe
|
2019-09-30 |
Chris Cannam |
The copy & move operators are not actually being used, so probably safer to delete them unless we know otherwise - this is not all that simple a class
|
2019-09-25 |
Chris Cannam |
Merge from branch time-frequency-boxes
|
2019-09-25 |
Chris Cannam |
Add duration-and-extent type, which corresponds to a box model
time-frequency-boxes
|
2019-09-25 |
Chris Cannam |
Indentation only
time-frequency-boxes
|
2019-09-25 |
Chris Cannam |
Rename TimeFrequencyBoxModel to simply BoxModel
time-frequency-boxes
|
2019-09-25 |
Chris Cannam |
Some tidying
time-frequency-boxes
|
2019-09-20 |
Chris Cannam |
Fixes to export of time-frequency box model
time-frequency-boxes
|
2019-09-20 |
Chris Cannam |
Reorder fields to ensure consistency with older Image model code
|
2019-09-20 |
Chris Cannam |
Reorder fields to ensure consistency with older Image model code
time-frequency-boxes
|
2019-09-20 |
Chris Cannam |
Ensure CSV-style export from time-freq box model is in the expected format
time-frequency-boxes
|
2019-09-19 |
Chris Cannam |
Introduce time-frequency box model
time-frequency-boxes
|
2019-09-17 |
Chris Cannam |
More graceful handling of failure to construct FFT models in the case where the source model has already been deleted before this occurs
|
2019-09-17 |
Chris Cannam |
Fix calculation of binary name (don't include full path!)
|
2019-09-17 |
Chris Cannam |
Lib dir name is usually the same as the binary name, not the formal application name
|
2019-09-16 |
Chris Cannam |
Update helper dir path to look in equivalent of /usr/lib/xxxx on Linux
|
2019-09-12 |
Chris Cannam |
Support optional max frequency setting, useful when we want to store caches of very constrained frequency ranges (as in melodic-range spectrogram, potentially)
|
2019-09-11 |
Chris Cannam |
Update macOS memory size check - the original sysctl was returning far too small a value for modern machines (because bounded to a 32-bit int)
|
2019-09-11 |
Chris Cannam |
Replace the model used for the cache part of the peak-cache model with a simple vector of vectors. Avoids unnecessary locking in a class that is not thread-safe in any case. Also record whether the final column is actually truncated, rather than risk possible backward seeks to re-read it in the case where it simply might be
|
2019-09-10 |
Chris Cannam |
Split EditableDenseThreeDimensionalModel into explicitly compressed and uncompressed variants. Simplifies the uncompressed version, and we may want to consider whether we need the compressed one at all.
|
2019-09-09 |
Chris Cannam |
Don't even ask to unload a library if we know about other plugins that are loaded from it. Plus debug tweaks
|
2019-09-04 |
Chris Cannam |
Some debug tweaks
|
2019-08-15 |
Chris Cannam |
Optionally record relative pitch
|
2019-08-14 |
Chris Cannam |
This output is too annoying, in the perfectly innocuous case of reading from an aggregate model whose components are different lengths
|
2019-08-14 |
Chris Cannam |
Be stricter - require org name as well as app name before allowing ResourceFinder to be used. This is because the application name may have a default, so we could end up with inconsistent results from using before & after these things have been set
|
2019-08-13 |
Chris Cannam |
Print log file location
|
2019-07-19 |
Chris Cannam |
Correct some erroneous signal signatures
|
2019-07-18 |
Chris Cannam |
Respect use-flexi-note-model setting
|
2019-07-18 |
Chris Cannam |
Remove debug output (by default)
|
2019-07-18 |
Chris Cannam |
Ensure the right model ID gets sent with the signal for alignment changes
|
2019-07-17 |
Chris Cannam |
Merge from branch by-id
|
2019-07-17 |
Chris Cannam |
Remove comment - these are now connected
by-id
|
2019-07-17 |
Chris Cannam |
Doc
by-id
|
2019-07-17 |
Chris Cannam |
Conditionally compile debug out
by-id
|
2019-07-15 |
Chris Cannam |
Deleted-model checks, & debug output
by-id
|
2019-07-12 |
Chris Cannam |
Work on management of alignment-related models
by-id
|
2019-07-08 |
Chris Cannam |
Fix typo that inverted sense of test
by-id
|
2019-07-08 |
Chris Cannam |
Print object name as well (if a QObject)
by-id
|
2019-07-07 |
Chris Cannam |
Fix signal spec
by-id
|
2019-07-06 |
Chris Cannam |
Merge
by-id
|
2019-07-06 |
Chris Cannam |
MSVC fixes
by-id
|
2019-07-05 |
Chris Cannam |
Don't hold on to borrowed pointer around the loop - so as to be informed when it becomes obsolete
by-id
|
2019-07-05 |
Chris Cannam |
Tidy
by-id
|
2019-07-05 |
Chris Cannam |
Comments
by-id
|
2019-07-05 |
Chris Cannam |
Further review of ById: make IDs only available when adding a model to the ById store, not by querying the item directly. This means any id encountered in the wild must have been added to the store at some point (even if later released), which simplifies reasoning about lifecycles
by-id
|
2019-07-04 |
Chris Cannam |
Overhaul PlayParameters bits
by-id
|
2019-07-04 |
Chris Cannam |
Return id from add(), + comment
by-id
|
2019-07-04 |
Chris Cannam |
Remove obsolete method
by-id
|
2019-07-03 |
Chris Cannam |
Update to ModelId
by-id
|
2019-07-02 |
Chris Cannam |
Comment
by-id
|
2019-07-02 |
Chris Cannam |
Add isa
by-id
|
2019-07-02 |
Chris Cannam |
Use reference rather than bare pointer
by-id
|
2019-07-02 |
Chris Cannam |
Update FFT model to ById
by-id
|
2019-07-01 |
Chris Cannam |
Fix deprecation warning
by-id
|
2019-06-28 |
Chris Cannam |
Rejig ById so as to put everything in a single pool, so that at the core you can go from numeric id (untyped) to anything the object can be dynamic_cast to. Useful for building other abstractions like PlayParameter-type registrations that don't know about e.g. Models. Probably some more tweaking needed. Also add tests
by-id
|
2019-06-27 |
Chris Cannam |
Work on commands, and some other model updates
by-id
|
2019-06-26 |
Chris Cannam |
More work on transformers
by-id
|
2019-06-26 |
Chris Cannam |
Some work on models and transformers
by-id
|
2019-06-26 |
Chris Cannam |
More on alignment models and paths
by-id
|
2019-06-25 |
Chris Cannam |
More on AlignmentModel
by-id
|
2019-06-25 |
Chris Cannam |
Merge
by-id
|
2019-06-25 |
Chris Cannam |
Some messing with Model and AlignmentModel
by-id
|
2019-06-24 |
Chris Cannam |
Warn for already-existing id
by-id
|
2019-06-24 |
Chris Cannam |
Fix some deprecation warnings
by-id
|
2019-06-21 |
Chris Cannam |
Experiment updating AggregateWaveModel
by-id
|
2019-06-21 |
Chris Cannam |
Introduce Model to ById
by-id
|
2019-06-20 |
Chris Cannam |
Merge
|
2019-06-20 |
Chris Cannam |
Experiment toward working out an id-model store
by-id
|
2019-05-22 |
Chris Cannam |
Merge
|
2019-06-20 |
Chris Cannam |
Fix potential deadlock when notifying a handler that more models are [not] available
|
2019-06-20 |
Chris Cannam |
Indentation only
|
2019-06-19 |
Chris Cannam |
Re-implement extendEndFrame behaviour, used by Tony application
|
2019-06-17 |
Chris Cannam |
Close paren in text
|
2019-06-12 |
Chris Cannam |
Emit signal when write completes
|
2019-06-10 |
Chris Cannam |
Merge
|
2019-06-03 |
Chris Cannam |
Merge
|
2019-06-07 |
Chris Cannam |
Merge
|
2019-05-21 |
Chris Cannam |
Branch
3.3-stable
|
2019-05-21 |
Chris Cannam |
32-bit build lacks AAC and WMA
|
2019-05-17 |
Chris Cannam |
Build fix for Travis
|
2019-05-17 |
Chris Cannam |
Remove hardcoded application name - this shouldn't be necessary now we're no longer doing a shadow build
|
2019-05-17 |
Chris Cannam |
Build fixes
|
2019-05-17 |
Chris Cannam |
Attempt to cope with the fact that Windows Server (for CI builds) lacks certain codecs
|
2019-05-17 |
Chris Cannam |
Merge from branch single-point
|
2019-05-16 |
Chris Cannam |
Make it permissible to setPathFrom(nullptr)
single-point
|
2019-05-16 |
Chris Cannam |
Fix breakages with Travis CI image
single-point
|
2019-05-16 |
Chris Cannam |
Oops
single-point
|
2019-05-16 |
Chris Cannam |
Oops
|
2019-05-16 |
Chris Cannam |
Merge from default branch
single-point
|
2019-05-16 |
Chris Cannam |
C++ compiler in Travis Xenial image doesn't seem to like this with nullptr
|
2019-05-16 |
Chris Cannam |
Merge from default branch
single-point
|
2019-05-15 |
Chris Cannam |
Add error field to alignment model
single-point
|
2019-05-13 |
Chris Cannam |
Associate a label with each recent files entry, as well as the identifier (filename)
single-point
|
2019-05-09 |
Chris Cannam |
Add haveRunningTransformers() and mutex
single-point
|
2019-05-07 |
Chris Cannam |
Ensure test fails rather than crashing if this reader doesn't get created
|
2019-05-07 |
Chris Cannam |
The editable dense 3d model uses ready/completion status differently from the new implementation it was inheriting from the base class - it is always "ready" even if not yet complete
single-point
|
2019-05-03 |
Chris Cannam |
Ensure test fails rather than crashing if this reader doesn't get created
single-point
|
2019-05-03 |
Chris Cannam |
Merge from default branch
single-point
|
2019-05-03 |
Chris Cannam |
Add tests for audio file readers presented with empty or nonsense input
|
2019-05-01 |
Chris Cannam |
Windows build fixes
single-point
|
2019-05-01 |
Chris Cannam |
Ensure a self-alignment is always reported as complete, since there is nothing to calculate
single-point
|
2019-04-25 |
Chris Cannam |
More compiler warning fixes
single-point
|
2019-04-25 |
Chris Cannam |
Also look for helpers in Resources folder on the Mac
single-point
|
2019-04-25 |
Chris Cannam |
Merge
single-point
|
2019-04-25 |
Chris Cannam |
Fix some compiler warnings
single-point
|
2019-04-24 |
Chris Cannam |
Merge from default branch
single-point
|
2019-04-23 |
Chris Cannam |
Add function to request multiple filenames
|
2019-04-05 |
Chris Cannam |
Build fix for older Qt
single-point
|
2019-04-04 |
Chris Cannam |
Model deletion issues - the AlignmentModel doesn't actually need to know about the input aggregate model; the document should own it instead
|
2019-04-04 |
Chris Cannam |
Think we may need this header with some compilers
single-point
|
2019-04-04 |
Chris Cannam |
Model deletion issues - the AlignmentModel doesn't actually need to know about the input aggregate model; the document should own it instead
single-point
|
2019-04-03 |
Chris Cannam |
Update tests for most recent changes
single-point
|
2019-04-03 |
Chris Cannam |
m_haveExtents should be true when extents are set explicitly, otherwise they'll get overridden when a point is added
single-point
|
2019-04-03 |
Chris Cannam |
Start ids at 0 - backward-compatibility makes testing easier
single-point
|
2019-04-03 |
Chris Cannam |
Restore always-on export of label even if empty - backward compatibility makes testing easier
single-point
|
2019-03-29 |
Chris Cannam |
Quick test with a peculiar transform size. I'm puzzled as to why we have 7 columns and not 6
single-point
|
2019-03-29 |
Chris Cannam |
Fix error message which says the opposite of the truth
single-point
|
2019-03-28 |
Chris Cannam |
Re-add the toDelimitedDataString stuff
single-point
|
2019-03-28 |
Chris Cannam |
Make it possible to start queue without port (even when compiled in)
single-point
|
2019-03-28 |
Chris Cannam |
Make XmlExportables store their export IDs and always obtain a new one, avoiding reuse when an object is allocated at the same heap location as a previous one. This makes the ID system stable enough to be used in the export tests.
single-point
|
2019-03-28 |
Chris Cannam |
Merge from branch osc-script
single-point
|
2019-03-28 |
Chris Cannam |
Write path points
osc-script
|
2019-03-27 |
Chris Cannam |
Ensure image & text models get the proper attribute names (which are not the same as the default event ones)
osc-script
|
2019-03-27 |
Chris Cannam |
Merge from branch single-point
osc-script
|
2019-03-27 |
Chris Cannam |
Remove no-longer-used model base classes
single-point
|
2019-03-27 |
Chris Cannam |
Rework isReady()/getCompletion() on models. Previously the new overhauled models were implementing getCompletion() but inheriting a version of isReady() (from the Model base) that didn't call it, referring only to isOK(). So they were reporting completion as soon as they had begun. Instead hoist getCompletion() to abstract base and call it from Model::isReady().
single-point
|
2019-03-27 |
Chris Cannam |
Add getPointCount, used in debug mode by AlignmentModel
single-point
|
2019-03-27 |
Chris Cannam |
Remove COMPLETION_UNKNOWN, which is never used (and never handled)
single-point
|
2019-03-26 |
Chris Cannam |
A bit more debug output
osc-script
|
2019-03-26 |
Chris Cannam |
Fix typo
osc-script
|
2019-03-26 |
Chris Cannam |
Debug output
osc-script
|
2019-03-26 |
Chris Cannam |
Debug output
osc-script
|
2019-03-25 |
Chris Cannam |
Toward running an OSC script in batch
osc-script
|
2019-03-22 |
Chris Cannam |
Update ImageModel
single-point
|
2019-03-22 |
Chris Cannam |
Update PathModel - doesn't use new EventSeries, but doesn't use SparseModel either - it's simpler than that
single-point
|
2019-03-22 |
Chris Cannam |
Update TextModel
single-point
|
2019-03-21 |
Chris Cannam |
We do need haveTextLabels; restore it
single-point
|
2019-03-21 |
Chris Cannam |
Work on start/end frame stuff to match API description
single-point
|
2019-03-20 |
Chris Cannam |
Start updating SparseOneDimensionalModel
single-point
|
2019-03-20 |
Chris Cannam |
Forward the matching-event functions
single-point
|
2019-03-20 |
Chris Cannam |
Test & fixes for getEventsStartingAt
single-point
|
2019-03-20 |
Chris Cannam |
Fixes: completion should default to 100 (it never gets set if we aren't a transform target); events added to time-value model should be denied durations; forward the overspill and matching search functions
single-point
|
2019-03-20 |
Chris Cannam |
Add overspill to events-within search
single-point
|
2019-03-19 |
Chris Cannam |
Add nearest-event-matching search
single-point
|
2019-03-19 |
Chris Cannam |
Update Labeller to new event API + fewer magical side-effects
single-point
|
2019-03-18 |
Chris Cannam |
Introduce deferred notifier, + start converting sparse time-value model (perhaps we should rename it too)
single-point
|
2019-03-18 |
Chris Cannam |
Make MagnitudeRange generic, in the form of Extents
single-point
|
2019-03-15 |
Chris Cannam |
Update RegionModel following NoteModel, er, model. They have quite a bit in common that we should now pull out some of
single-point
|
2019-03-15 |
Chris Cannam |
Switch to a single external set of commands for modifying editables with events
single-point
|
2019-03-14 |
Chris Cannam |
Rework NoteModel commands (not entirely successfully); remove FlexiNoteModel as it has always been almost entirely identical to NoteModel (unlike its layer counterpart)
single-point
|
2019-03-14 |
Chris Cannam |
Command tweaks, including executing it!
single-point
|
2019-03-14 |
Chris Cannam |
Add getDuratioN
single-point
|
2019-03-13 |
Chris Cannam |
Further API updates
single-point
|
2019-03-13 |
Chris Cannam |
Update NoteModel to use EventSeries. This is incomplete and won't provide enough to update svgui for it yet; must also refactor to avoid duplication of nasty APIs when updating the rest of the models
single-point
|
2019-03-13 |
Chris Cannam |
Fix compiler warning
single-point
|
2019-03-13 |
Chris Cannam |
Fix XML
single-point
|
2019-03-13 |
Chris Cannam |
Add and test getEndFrame (and getStartFrame)
single-point
|
2019-03-13 |
Chris Cannam |
Test getEventsStartingWithin (briefly)
single-point
|
2019-03-13 |
Chris Cannam |
Add getEventsStartingWithin
single-point
|
2019-03-13 |
Chris Cannam |
Make const
single-point
|
2019-03-13 |
Chris Cannam |
Add getEventsWithin
single-point
|
2019-03-13 |
Chris Cannam |
Add getEventsWithin
single-point
|
2019-03-13 |
Chris Cannam |
Always return consistent defaults for absent elements
single-point
|
2019-03-12 |
Chris Cannam |
Further test & fixes
single-point
|
2019-03-12 |
Chris Cannam |
Add some more handy methods
single-point
|