class Format
{
public:
- Format (Size dcp, std::string id, std::string n)
+ Format (libdcp::Size dcp, std::string id, std::string n, std::string d)
: _dcp_size (dcp)
, _id (id)
, _nickname (n)
+ , _dci_name (d)
{}
- /** @return the aspect ratio multiplied by 100
- * (e.g. 239 for Cinemascope 2.39:1)
- */
- virtual int ratio_as_integer (Film const * f) const = 0;
-
- /** @return the ratio as a floating point number */
- virtual float ratio_as_float (Film const * f) const = 0;
+ /** @return the ratio of the container (including any padding) */
+ float container_ratio () const;
- int dcp_padding (Film const * f) const;
+ int dcp_padding (boost::shared_ptr<const Film> f) const;
/** @return size in pixels of the images that we should
* put in a DCP for this ratio. This size will not correspond
* to the ratio when we are doing things like 16:9 in a Flat frame.
*/
- Size dcp_size () const {
+ libdcp::Size dcp_size () const {
return _dcp_size;
}
return _nickname;
}
+ std::string dci_name () const {
+ return _dci_name;
+ }
+
std::string as_metadata () const;
static Format const * from_nickname (std::string n);
static void setup_formats ();
protected:
- /** Size in pixels of the images that we should
+ /** @return the ratio */
+ virtual float ratio (boost::shared_ptr<const Film> f) const = 0;
+
+ /** libdcp::Size in pixels of the images that we should
* put in a DCP for this ratio. This size will not correspond
* to the ratio when we are doing things like 16:9 in a Flat frame.
*/
- Size _dcp_size;
+ libdcp::Size _dcp_size;
/** id for use in metadata */
std::string _id;
/** nickname (e.g. Flat, Scope) */
std::string _nickname;
+ std::string _dci_name;
private:
/** all available formats */
class FixedFormat : public Format
{
public:
- FixedFormat (int, Size, std::string, std::string);
+ FixedFormat (float, libdcp::Size, std::string, std::string, std::string);
- int ratio_as_integer (Film const *) const {
+ float ratio (boost::shared_ptr<const Film>) const {
return _ratio;
}
- float ratio_as_float (Film const *) const {
- return _ratio / 100.0;
- }
-
std::string name () const;
private:
- /** Ratio expressed as the actual ratio multiplied by 100 */
- int _ratio;
+ float _ratio;
};
class VariableFormat : public Format
{
public:
- VariableFormat (Size, std::string, std::string);
+ VariableFormat (libdcp::Size, std::string, std::string, std::string);
- int ratio_as_integer (Film const * f) const;
- float ratio_as_float (Film const * f) const;
+ float ratio (boost::shared_ptr<const Film> f) const;
std::string name () const;
};