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

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)
 
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)