Replace hack with use of generic_string from boost::filesystem.
[libdcp.git] / src / reel_picture_asset.h
index 7ab92228f369eadd209d9f5be5b62342c697aa24..1611221fc32a777be7f0a174e91aa6a46aedeff0 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2014-2015 Carl Hetherington <cth@carlh.net>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 #ifndef LIBDCP_REEL_PICTURE_ASSET_H
 #define LIBDCP_REEL_PICTURE_ASSET_H
 
-#include "reel_mxf_asset.h"
-#include "picture_mxf.h"
+#include "reel_mxf.h"
+#include "reel_asset.h"
+#include "picture_asset.h"
 
 namespace dcp {
 
 /** @class ReelPictureAsset
- *  @brief Part of a Reel's description which refers to a picture MXF.
+ *  @brief Part of a Reel's description which refers to a picture asset.
  */
-class ReelPictureAsset : public ReelMXFAsset
+class ReelPictureAsset : public ReelAsset, public ReelMXF
 {
 public:
        ReelPictureAsset ();
-       ReelPictureAsset (boost::shared_ptr<PictureMXF> content, int64_t entry_point);
+       ReelPictureAsset (boost::shared_ptr<PictureAsset> asset, int64_t entry_point);
        ReelPictureAsset (boost::shared_ptr<const cxml::Node>);
 
        virtual void write_to_cpl (xmlpp::Node* node, Standard standard) const;
+       virtual bool equals (boost::shared_ptr<const ReelAsset>, EqualityOptions, NoteHandler) const;
 
-       boost::shared_ptr<PictureMXF> mxf () {
-               return boost::dynamic_pointer_cast<PictureMXF> (_content.object ());
+       /** @return the PictureAsset that this object refers to */
+       boost::shared_ptr<const PictureAsset> asset () const {
+               return asset_of_type<const PictureAsset> ();
        }
 
+       /** @return the PictureAsset that this object refers to */
+       boost::shared_ptr<PictureAsset> asset () {
+               return asset_of_type<PictureAsset> ();
+       }
+
+       /** @return picture frame rate */
        Fraction frame_rate () const {
                return _frame_rate;
        }
 
+       /** Set the ScreenAspectRatio of this asset.
+        *  @param a New aspect ratio.
+        */
        void set_screen_aspect_ratio (Fraction a) {
                _screen_aspect_ratio = a;
        }
 
+       Fraction screen_aspect_ratio () const {
+               return _screen_aspect_ratio;
+       }
+
 private:
        std::string key_type () const;
-       
+
        Fraction _frame_rate;
        Fraction _screen_aspect_ratio;
 };