File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ // SPDX-License-Identifier: Apache-2.0
2+ // Copyright Contributors to the OpenTimelineIO project
3+
4+ #import < Foundation/Foundation.h>
5+
6+ typedef struct CxxBox2D {
7+ double minX;
8+ double minY;
9+ double maxX;
10+ double maxY;
11+ } CxxBox2D;
12+
Original file line number Diff line number Diff line change 1010#import " CxxAnyDictionaryIterator.h"
1111#import " CxxAnyVectorMutationStamp.h"
1212#import " CxxVectorProperty.h"
13+ #import " CxxBox.h"
1314#import " errorStruct.h"
1415
1516#if defined(__cplusplus)
@@ -183,7 +184,11 @@ bool media_reference_is_missing_reference(CxxRetainer* self);
183184bool media_reference_available_range (CxxRetainer* self, CxxTimeRange*);
184185void media_reference_set_available_range (CxxRetainer* self, CxxTimeRange);
185186void media_reference_clear_available_range (CxxRetainer* self);
186-
187+
188+ bool media_reference_available_image_bounds (CxxRetainer* self, CxxBox2D* );
189+ void media_reference_set_available_image_bounds (CxxRetainer* self, CxxBox2D image_bounds);
190+ void media_reference_clear_available_image_bounds (CxxRetainer* self);
191+
187192// MARK: - Timeline
188193void * timeline_get_tracks (CxxRetainer* self);
189194void timeline_set_tracks (CxxRetainer* self, CxxRetainer* stack);
Original file line number Diff line number Diff line change 3737#import " opentimelineio.h"
3838#import " opentime.h"
3939#import " errorStruct.h"
40+ #import " CxxBox.h"
4041#import " CxxVectorProperty.h"
4142
4243namespace otio = opentimelineio::OPENTIMELINEIO_VERSION;
@@ -631,6 +632,39 @@ void media_reference_clear_available_range(CxxRetainer* self) {
631632 SO_cast<otio::MediaReference>(self)->set_available_range (std::nullopt );
632633}
633634
635+ bool media_reference_available_image_bounds (CxxRetainer* self, CxxBox2D* ib) {
636+ std::optional<IMATH_NAMESPACE::Box2d> iBox2D = SO_cast<otio::MediaReference>(self)->available_image_bounds ();
637+
638+ if (iBox2D && ib) {
639+ ib->minX = iBox2D->min .x ;
640+ ib->minY = iBox2D->min .y ;
641+ ib->maxX = iBox2D->max .x ;
642+ ib->maxX = iBox2D->max .y ;
643+
644+ return true ;
645+ }
646+
647+ ib = NULL ;
648+
649+ return false ;
650+ }
651+
652+ void media_reference_set_available_image_bounds (CxxRetainer* self, CxxBox2D image_bounds) {
653+ std::optional<IMATH_NAMESPACE::Box2d> iBox2D = std::optional<IMATH_NAMESPACE::Box2d>();
654+
655+ iBox2D->min .x = image_bounds.minX ;
656+ iBox2D->min .y = image_bounds.minY ;
657+ iBox2D->max .x = image_bounds.maxX ;
658+ iBox2D->max .y = image_bounds.maxX ;
659+
660+ SO_cast<otio::MediaReference>(self)->set_available_image_bounds (iBox2D);
661+ }
662+
663+ void media_reference_clear_available_image_bounds (CxxRetainer* self) {
664+ SO_cast<otio::MediaReference>(self)->set_available_image_bounds (std::nullopt );
665+ }
666+
667+
634668// MARK: - Timeline
635669
636670void * timeline_get_tracks (CxxRetainer* self) {
Original file line number Diff line number Diff line change @@ -49,4 +49,21 @@ public class MediaReference : SerializableObjectWithMetadata {
4949 public var isMissingReference : Bool {
5050 get { return media_reference_is_missing_reference ( self ) }
5151 }
52+
53+ public var availableImageBounds : CxxBox2D ?
54+ {
55+ get { var box2D = CxxBox2D ( )
56+ return media_reference_available_image_bounds ( self , & box2D) ? box2D : nil
57+ }
58+ set {
59+ if let newValue = newValue {
60+ media_reference_set_available_image_bounds ( self , newValue)
61+ }
62+ else
63+ {
64+ media_reference_clear_available_image_bounds ( self )
65+ }
66+ }
67+
68+ }
5269}
You can’t perform that action at this time.
0 commit comments