dramatic change in logic and naming for operations related to adding a MIDI region...
[ardour.git] / libs / ardour / ardour / region.h
index bc8e7383f289a53659caf152771916c81634f359..a66047a02a1a2d026df9b515f0c977a3f980e6af 100644 (file)
 
 class XMLNode;
 
-
 namespace ARDOUR {
 
 namespace Properties {
-       extern PBD::PropertyDescriptor<bool>              muted;
-       extern PBD::PropertyDescriptor<bool>              opaque;
-       extern PBD::PropertyDescriptor<bool>              locked;
-       extern PBD::PropertyDescriptor<bool>              automatic;
-       extern PBD::PropertyDescriptor<bool>              whole_file;
-       extern PBD::PropertyDescriptor<bool>              import;
-       extern PBD::PropertyDescriptor<bool>              external;
-       extern PBD::PropertyDescriptor<bool>              sync_marked;
-       extern PBD::PropertyDescriptor<bool>              left_of_split;
-       extern PBD::PropertyDescriptor<bool>              right_of_split;
-       extern PBD::PropertyDescriptor<bool>              hidden;
-       extern PBD::PropertyDescriptor<bool>              position_locked;
-       extern PBD::PropertyDescriptor<bool>              valid_transients;
-       extern PBD::PropertyDescriptor<framepos_t>        start;
-       extern PBD::PropertyDescriptor<framecnt_t>        length;
-       extern PBD::PropertyDescriptor<framepos_t>        position;
-       extern PBD::PropertyDescriptor<framecnt_t>        sync_position;
-       extern PBD::PropertyDescriptor<layer_t>           layer;
-       extern PBD::PropertyDescriptor<framepos_t>        ancestral_start;
-       extern PBD::PropertyDescriptor<framecnt_t>        ancestral_length;
-       extern PBD::PropertyDescriptor<float>             stretch;
-       extern PBD::PropertyDescriptor<float>             shift;
-       extern PBD::PropertyDescriptor<PositionLockStyle> position_lock_style;
-       extern PBD::PropertyDescriptor<uint64_t>          layering_index;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              muted;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              opaque;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              locked;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              video_locked;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              automatic;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              whole_file;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              import;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              external;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              sync_marked;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              left_of_split;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              right_of_split;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              hidden;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              position_locked;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<bool>              valid_transients;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<framepos_t>        start;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<framecnt_t>        length;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<framepos_t>        position;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<framecnt_t>        sync_position;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<layer_t>           layer;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<framepos_t>        ancestral_start;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<framecnt_t>        ancestral_length;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<float>             stretch;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<float>             shift;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<PositionLockStyle> position_lock_style;
+       LIBARDOUR_API extern PBD::PropertyDescriptor<uint64_t>          layering_index;
 };
 
 class Playlist;
@@ -73,14 +73,14 @@ class Filter;
 class ExportSpecification;
 class Progress;
 
-enum RegionEditState {
+enum LIBARDOUR_API RegionEditState {
        EditChangesNothing = 0,
        EditChangesName    = 1,
        EditChangesID      = 2
 };
 
 
-class Region
+class LIBARDOUR_API Region
        : public SessionObject
        , public boost::enable_shared_from_this<Region>
        , public Readable
@@ -163,6 +163,7 @@ class Region
        bool opaque ()           const { return _opaque; }
        bool locked ()           const { return _locked; }
        bool position_locked ()  const { return _position_locked; }
+       bool video_locked ()     const { return _video_locked; }
        bool valid_transients () const { return _valid_transients; }
        bool automatic ()        const { return _automatic; }
        bool whole_file ()       const { return _whole_file; }
@@ -218,7 +219,7 @@ class Region
        bool at_natural_position () const;
        void move_to_natural_position ();
 
-       void trim_start (framepos_t new_position);
+       void move_start (frameoffset_t distance);
        void trim_front (framepos_t new_position);
        void trim_end (framepos_t new_position);
        void trim_to (framepos_t position, framecnt_t length);
@@ -240,6 +241,7 @@ class Region
        void set_automatic (bool yn);
        void set_opaque (bool yn);
        void set_locked (bool yn);
+       void set_video_locked (bool yn);
        void set_position_locked (bool yn);
 
        int apply (Filter &, Progress* progress = 0);
@@ -392,6 +394,7 @@ class Region
        PBD::Property<bool>        _muted;
        PBD::Property<bool>        _opaque;
        PBD::Property<bool>        _locked;
+       PBD::Property<bool>        _video_locked;
        PBD::Property<bool>        _automatic;
        PBD::Property<bool>        _whole_file;
        PBD::Property<bool>        _import;