@@ -260,6 +260,8 @@ class Box : public BoxHeader
260
260
261
261
void set_is_essential (bool flag) { m_is_essential = flag; }
262
262
263
+ virtual bool is_transformative_property () const { return false ; } // only used for properties
264
+
263
265
protected:
264
266
virtual Error parse (BitstreamRange& range, const heif_security_limits* limits);
265
267
@@ -802,6 +804,9 @@ class Box_ipma : public FullBox
802
804
803
805
void insert_entries_from_other_ipma_box (const Box_ipma& b);
804
806
807
+ // sorts properties such that descriptive properties precede the transformative properties
808
+ void sort_properties (const std::shared_ptr<Box_ipco>&);
809
+
805
810
protected:
806
811
Error parse (BitstreamRange& range, const heif_security_limits*) override ;
807
812
@@ -854,6 +859,8 @@ class Box_irot : public Box
854
859
855
860
bool is_essential () const override { return true ; }
856
861
862
+ bool is_transformative_property () const override { return true ; }
863
+
857
864
std::string dump (Indent&) const override ;
858
865
859
866
int get_rotation_ccw () const { return m_rotation; }
@@ -883,6 +890,8 @@ class Box_imir : public Box
883
890
884
891
bool is_essential () const override { return true ; }
885
892
893
+ bool is_transformative_property () const override { return true ; }
894
+
886
895
heif_transform_mirror_direction get_mirror_direction () const { return m_axis; }
887
896
888
897
void set_mirror_direction (heif_transform_mirror_direction dir) { m_axis = dir; }
@@ -911,6 +920,8 @@ class Box_clap : public Box
911
920
912
921
bool is_essential () const override { return true ; }
913
922
923
+ bool is_transformative_property () const override { return true ; }
924
+
914
925
std::string dump (Indent&) const override ;
915
926
916
927
int left_rounded (uint32_t image_width) const ; // first column
0 commit comments