Loading...
Searching...
No Matches
Curve Namespace Reference

Utilities and base classes for 1D curves. More...

Detailed Description

Utilities and base classes for 1D curves.

This plug-in contains the tools used in score to create and edit curves.

  • The triplet Curve::CurveModel, Curve::CurvePresenter, Curve::CurveView represents an editable curve.
  • For processes that only use a single curve, base classes are provided for convenience : Curve::CurveProcessModel and Curve::CurveProcessPresenter.
  • Common curve segments types are provided.

    Todo:
    Put the easing segments defined in the engine library in this library.

A way to skin curves differently according to the curve type is given through Curve::Style.

Classes

class  ApplicationPlugin
 
class  ClickOnAnything_Transition
 
class  CommandObjectBase
 
class  CreatePenTool
 
class  CreatePointCommandObject
 
class  CreateTool
 
class  CurveDataHash
 
struct  CurveDomain
 
class  CurveEditor
 
struct  CurveEvent
 
class  CurveLayerFactory_T
 
class  CurveProcessModel
 
class  CurveProcessPresenter
 
struct  CurveSegmentMap
 
class  CurveTool
 
struct  EasingData
 
class  EasingSegment
 
class  EditionSettings
 
class  EditionToolForCreate
 
class  MatchedCurveTransition
 
class  Model
 
class  MoveOnAnything_Transition
 
class  MovePoint
 
class  MovePointCommandObject
 
class  MoveSegmentCommandObject
 
class  OngoingState
 
class  PenCommandObject
 
struct  point_array_executor
 
struct  PointId
 
class  PointInspectorWidget
 
class  PointModel
 
class  PointView
 
class  PositionedCurveTransition
 
class  Presenter
 
class  ReleaseOnAnything_Transition
 
struct  SegmentData
 
class  SegmentFactory
 
class  SegmentFactory_T
 
class  SegmentList
 
class  SegmentModel
 
class  SegmentView
 
class  SelectionState
 
class  SetSegmentParameters
 
class  SetSegmentParametersCommandObject
 
class  SetSegmentTool
 
class  SmartTool
 
class  StateBase
 
struct  Style
 
struct  StyleInterface
 
class  ToolPalette
 
struct  ToolPalette_T
 
class  UpdateCurve
 
class  View
 

Typedefs

using SegmentParameterMap = ossia::flat_map< Id< SegmentModel >, std::pair< double, double > >
 
using SegmentMapImpl = ossia::hash_map< Id< SegmentModel >, SegmentData, CurveDataHash >
 
using ClickOnNothing_Event = CurveEvent< Element::Nothing_tag, score::Modifier::Click_tag >
 
using ClickOnPoint_Event = CurveEvent< Element::Point_tag, score::Modifier::Click_tag >
 
using ClickOnSegment_Event = CurveEvent< Element::Segment_tag, score::Modifier::Click_tag >
 
using MoveOnNothing_Event = CurveEvent< Element::Nothing_tag, score::Modifier::Move_tag >
 
using MoveOnPoint_Event = CurveEvent< Element::Point_tag, score::Modifier::Move_tag >
 
using MoveOnSegment_Event = CurveEvent< Element::Segment_tag, score::Modifier::Move_tag >
 
using ReleaseOnNothing_Event = CurveEvent< Element::Nothing_tag, score::Modifier::Release_tag >
 
using ReleaseOnPoint_Event = CurveEvent< Element::Point_tag, score::Modifier::Release_tag >
 
using ReleaseOnSegment_Event = CurveEvent< Element::Segment_tag, score::Modifier::Release_tag >
 
template<typename T >
using GenericTransition = score::StateAwareTransition< StateBase, T >
 
using ClickOnNothing_Transition = PositionedCurveTransition< Element::Nothing_tag, score::Modifier::Click_tag >
 
using ClickOnPoint_Transition = PositionedCurveTransition< Element::Point_tag, score::Modifier::Click_tag >
 
using ClickOnSegment_Transition = PositionedCurveTransition< Element::Segment_tag, score::Modifier::Click_tag >
 
using MoveOnNothing_Transition = PositionedCurveTransition< Element::Nothing_tag, score::Modifier::Move_tag >
 
using MoveOnPoint_Transition = PositionedCurveTransition< Element::Point_tag, score::Modifier::Move_tag >
 
using MoveOnSegment_Transition = PositionedCurveTransition< Element::Segment_tag, score::Modifier::Move_tag >
 
using ReleaseOnNothing_Transition = PositionedCurveTransition< Element::Nothing_tag, score::Modifier::Release_tag >
 
using ReleaseOnPoint_Transition = PositionedCurveTransition< Element::Point_tag, score::Modifier::Release_tag >
 
using ReleaseOnSegment_Transition = PositionedCurveTransition< Element::Segment_tag, score::Modifier::Release_tag >
 
using Point = QPointF
 
using DefaultCurveSegmentModel = PowerSegment
 
using DefaultCurveSegmentData = PowerSegmentData
 
using Segment_backIn = EasingSegment< ossia::easing::backIn >
 
using Segment_backOut = EasingSegment< ossia::easing::backOut >
 
using Segment_backInOut = EasingSegment< ossia::easing::backInOut >
 
using Segment_bounceIn = EasingSegment< ossia::easing::bounceIn >
 
using Segment_bounceOut = EasingSegment< ossia::easing::bounceOut >
 
using Segment_bounceInOut = EasingSegment< ossia::easing::bounceInOut >
 
using Segment_quadraticIn = EasingSegment< ossia::easing::quadraticIn >
 
using Segment_quadraticOut = EasingSegment< ossia::easing::quadraticOut >
 
using Segment_quadraticInOut = EasingSegment< ossia::easing::quadraticInOut >
 
using Segment_cubicIn = EasingSegment< ossia::easing::cubicIn >
 
using Segment_cubicOut = EasingSegment< ossia::easing::cubicOut >
 
using Segment_cubicInOut = EasingSegment< ossia::easing::cubicInOut >
 
using Segment_quarticIn = EasingSegment< ossia::easing::quarticIn >
 
using Segment_quarticOut = EasingSegment< ossia::easing::quarticOut >
 
using Segment_quarticInOut = EasingSegment< ossia::easing::quarticInOut >
 
using Segment_quinticIn = EasingSegment< ossia::easing::quinticIn >
 
using Segment_quinticOut = EasingSegment< ossia::easing::quinticOut >
 
using Segment_quinticInOut = EasingSegment< ossia::easing::quinticInOut >
 
using Segment_sineIn = EasingSegment< ossia::easing::sineIn >
 
using Segment_sineOut = EasingSegment< ossia::easing::sineOut >
 
using Segment_sineInOut = EasingSegment< ossia::easing::sineInOut >
 
using Segment_circularIn = EasingSegment< ossia::easing::circularIn >
 
using Segment_circularOut = EasingSegment< ossia::easing::circularOut >
 
using Segment_circularInOut = EasingSegment< ossia::easing::circularInOut >
 
using Segment_exponentialIn = EasingSegment< ossia::easing::exponentialIn >
 
using Segment_exponentialOut = EasingSegment< ossia::easing::exponentialOut >
 
using Segment_exponentialInOut = EasingSegment< ossia::easing::exponentialInOut >
 
using Segment_elasticIn = EasingSegment< ossia::easing::elasticIn >
 
using Segment_elasticOut = EasingSegment< ossia::easing::elasticOut >
 
using Segment_elasticInOut = EasingSegment< ossia::easing::elasticInOut >
 
using Segment_perlinInOut = EasingSegment< ossia::easing::perlinInOut >
 
using pow_tables_t = std::array< std::array< double, 76 >, 76 >
 

Enumerations

enum class  Tool {
  Disabled , Select , Create , SetSegment ,
  CreatePen , RemovePen , Playing
}
 
enum class  AddPointBehaviour { LinearBefore , LinearAfter , DuplicateSegment }
 
enum class  RemovePointBehaviour { Remove , RemoveAndAddSegment }
 
enum  Segments { Hashed }
 

Functions

const CommandGroupKeyCommandFactoryName ()
 
std::vector< SegmentDataorderedSegments (const Model &curve)
 
void checkValidity (SegmentMapImpl &segts)
 
void checkValidity (std::span< SegmentData > segts)
 
bool operator< (const SegmentData &lhs, const SegmentData &rhs)
 
bool operator<= (const SegmentData &lhs, const SegmentData &rhs)
 
template<typename Container >
Id< SegmentModelgetSegmentId (const Container &ids)
 
Id< SegmentModelgetSegmentId (const std::vector< SegmentData > &ids)
 
Id< SegmentModelgetSegmentId (const std::vector< Id< SegmentModel > > &ids)
 
Curve::SegmentModelcreateCurveSegment (const Curve::SegmentList &csl, const Curve::SegmentData &dat, QObject *parent)
 
SegmentData flatCurveSegment (double val, double min, double max)