#ifndef LIBSUB_FONT_SIZE_H
#define LIBSUB_FONT_SIZE_H
+#include <boost/optional.hpp>
+
namespace sub {
-
+
+/** @class FontSize
+ * @brief A description of a font's size in one of a number of ways.
+ *
+ * An object of this class holds a font's size in one way, and it can convert
+ * to another on supply of the required conversion parameters.
+ */
class FontSize
{
public:
void set_proportional (float p) {
_proportional = p;
}
-
+
void set_points (int p) {
_points = p;
}
boost::optional<float> proportional () const {
return _proportional;
}
-
+
boost::optional<int> points () const {
return _points;
}
-
+
+ bool specified () const;
+
float proportional (int screen_height_in_points) const;
int points (int screen_height_in_points) const;
-
-private:
+
+ static FontSize from_points (int p);
+
+private:
/** as a proportion of screen height */
boost::optional<float> _proportional;
/** in points */
boost::optional<int> _points;
-
+
};
}