#[derive(Clone, Debug, PartialEq)]
#[allow(missing_docs)]
pub enum ViewportDescriptor
{
MinWidth(ViewportLength),
MaxWidth(ViewportLength),
Width { minimum: ViewportLength, maximum: Option<ViewportLength> },
MinHeight(ViewportLength),
MaxHeight(ViewportLength),
Height { minimum: ViewportLength, maximum: Option<ViewportLength> },
Zoom(ViewportZoom),
MinZoom(ViewportZoom),
MaxZoom(ViewportZoom),
UserZoom(ViewportUserZoom),
Orientation(ViewportOrientation),
}
impl ToCss for ViewportDescriptor
{
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result
{
use self::ViewportDescriptor::*;
match *self
{
MinWidth(ref descriptor_value) =>
{
dest.write_str("min-width")?;
dest.write_char(':')?;
descriptor_value.to_css(dest)?;
}
MaxWidth(ref descriptor_value) =>
{
dest.write_str("max-width")?;
dest.write_char(':')?;
descriptor_value.to_css(dest)?;
}
Width { ref minimum, ref maximum } =>
{
dest.write_str("width")?;
dest.write_char(':')?;
minimum.to_css(dest)?;
if let &Some(ref maximum) = maximum
{
dest.write_char(' ')?;
maximum.to_css(dest)?;
}
}
MinHeight(ref descriptor_value) =>
{
dest.write_str("min-height")?;
dest.write_char(':')?;
descriptor_value.to_css(dest)?;
}
MaxHeight(ref descriptor_value) =>
{
dest.write_str("max-height")?;
dest.write_char(':')?;
descriptor_value.to_css(dest)?;
}
Height { ref minimum, ref maximum } =>
{
dest.write_str("height")?;
dest.write_char(':')?;
minimum.to_css(dest)?;
if let &Some(ref maximum) = maximum
{
dest.write_char(' ')?;
maximum.to_css(dest)?;
}
}
Zoom(ref descriptor_value) =>
{
dest.write_str("zoom")?;
dest.write_char(':')?;
descriptor_value.to_css(dest)?;
}
MinZoom(ref descriptor_value) =>
{
dest.write_str("min-zoom")?;
dest.write_char(':')?;
descriptor_value.to_css(dest)?;
}
MaxZoom(ref descriptor_value) =>
{
dest.write_str("max-zoom")?;
dest.write_char(':')?;
descriptor_value.to_css(dest)?;
}
UserZoom(ref descriptor_value) =>
{
dest.write_str("user-zoom")?;
dest.write_char(':')?;
descriptor_value.to_css(dest)?;
}
Orientation(ref descriptor_value) =>
{
dest.write_str("orientation")?;
dest.write_char(':')?;
descriptor_value.to_css(dest)?;
}
}
dest.write_char(';')
}
}
impl ViewportDescriptor
{
#[inline(always)]
pub fn css_name(&self) -> &'static str
{
use self::ViewportDescriptor::*;
match *self
{
MinWidth(_) => "min-width",
MaxWidth(_) => "max-width",
Width { .. } => "width",
MinHeight(_) => "min-height",
MaxHeight(_) => "max-height",
Height { .. } => "height",
Zoom(_) => "zoom",
MinZoom(_) => "min-zoom",
MaxZoom(_) => "max-zoom",
UserZoom(_) => "user-zoom",
Orientation(_) => "orientation",
}
}
}