Mir
Classes | Namespaces | Typedefs | Functions
dimensions_generic.h File Reference
#include <iosfwd>
#include <type_traits>
Include dependency graph for dimensions_generic.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  mir::geometry::WidthTag
 These tag types determine what type of dimension a value holds and what operations are possible with it. They are only used as template paramaters, are never instantiated and should only require forward declarations, but some compiler versions seem to fail if they aren't given real declarations. More...
 
struct  mir::geometry::HeightTag
 
struct  mir::geometry::XTag
 
struct  mir::geometry::YTag
 
struct  mir::geometry::DeltaXTag
 
struct  mir::geometry::DeltaYTag
 
struct  mir::geometry::detail::ValueWrapperBase
 
struct  mir::geometry::generic::Value< T >
 
struct  mir::geometry::generic::Value< T >::Wrapper< Tag >
 Wraps a geometry value and prevents it from being accidentally used for invalid operations (such as setting a width to a height or adding two x positions together). Of course, explicit casts are possible to get around these restrictions (see the as_*() functions). int values (which are most values) should use the derived IntWrapper class, and other types should use this directly. More...
 

Namespaces

 mir
 
 mir::geometry
 Basic geometry types. Types for dimensions, displacements, etc. and the operations that they support.
 
 mir::geometry::detail
 
 mir::geometry::generic
 

Typedefs

template<class GeometricType , typename Tag >
using mir::geometry::generic::Corresponding = typename GeometricType::template Corresponding< Tag >
 
template<typename T >
using mir::geometry::generic::Width = typename Value< T >::template Wrapper< WidthTag >
 
template<typename T >
using mir::geometry::generic::Height = typename Value< T >::template Wrapper< HeightTag >
 
template<typename T >
using mir::geometry::generic::X = typename Value< T >::template Wrapper< XTag >
 
template<typename T >
using mir::geometry::generic::Y = typename Value< T >::template Wrapper< YTag >
 
template<typename T >
using mir::geometry::generic::DeltaX = typename Value< T >::template Wrapper< DeltaXTag >
 
template<typename T >
using mir::geometry::generic::DeltaY = typename Value< T >::template Wrapper< DeltaYTag >
 

Functions

template<typename W , typename std::enable_if< std::is_base_of< detail::ValueWrapperBase, W >::value, bool >::type = true>
std::ostream & mir::geometry::generic::operator<< (std::ostream &out, W const &value)
 
template<template< typename > typename T>
constexpr T< DeltaXTag > mir::geometry::operator+ (T< DeltaXTag > lhs, T< DeltaXTag > rhs)
 
template<template< typename > typename T>
constexpr T< DeltaYTag > mir::geometry::operator+ (T< DeltaYTag > lhs, T< DeltaYTag > rhs)
 
template<template< typename > typename T>
constexpr T< DeltaXTag > mir::geometry::operator- (T< DeltaXTag > lhs, T< DeltaXTag > rhs)
 
template<template< typename > typename T>
constexpr T< DeltaYTag > mir::geometry::operator- (T< DeltaYTag > lhs, T< DeltaYTag > rhs)
 
template<template< typename > typename T>
constexpr T< DeltaXTag > mir::geometry::operator- (T< DeltaXTag > rhs)
 
template<template< typename > typename T>
constexpr T< DeltaYTag > mir::geometry::operator- (T< DeltaYTag > rhs)
 
template<template< typename > typename T>
T< DeltaXTag > & mir::geometry::operator+= (T< DeltaXTag > &lhs, T< DeltaXTag > rhs)
 
template<template< typename > typename T>
T< DeltaYTag > & mir::geometry::operator+= (T< DeltaYTag > &lhs, T< DeltaYTag > rhs)
 
template<template< typename > typename T>
T< DeltaXTag > & mir::geometry::operator-= (T< DeltaXTag > &lhs, T< DeltaXTag > rhs)
 
template<template< typename > typename T>
T< DeltaYTag > & mir::geometry::operator-= (T< DeltaYTag > &lhs, T< DeltaYTag > rhs)
 
template<template< typename > typename T>
constexpr T< XTag > mir::geometry::operator+ (T< XTag > lhs, T< DeltaXTag > rhs)
 
template<template< typename > typename T>
constexpr T< YTag > mir::geometry::operator+ (T< YTag > lhs, T< DeltaYTag > rhs)
 
template<template< typename > typename T>
constexpr T< XTag > mir::geometry::operator- (T< XTag > lhs, T< DeltaXTag > rhs)
 
template<template< typename > typename T>
constexpr T< YTag > mir::geometry::operator- (T< YTag > lhs, T< DeltaYTag > rhs)
 
template<template< typename > typename T>
T< XTag > & mir::geometry::operator+= (T< XTag > &lhs, T< DeltaXTag > rhs)
 
template<template< typename > typename T>
T< YTag > & mir::geometry::operator+= (T< YTag > &lhs, T< DeltaYTag > rhs)
 
template<template< typename > typename T>
T< XTag > & mir::geometry::operator-= (T< XTag > &lhs, T< DeltaXTag > rhs)
 
template<template< typename > typename T>
T< YTag > & mir::geometry::operator-= (T< YTag > &lhs, T< DeltaYTag > rhs)
 
template<template< typename > typename T>
constexpr T< WidthTag > mir::geometry::operator+ (T< WidthTag > lhs, T< DeltaXTag > rhs)
 
template<template< typename > typename T>
constexpr T< HeightTag > mir::geometry::operator+ (T< HeightTag > lhs, T< DeltaYTag > rhs)
 
template<template< typename > typename T>
constexpr T< WidthTag > mir::geometry::operator- (T< WidthTag > lhs, T< DeltaXTag > rhs)
 
template<template< typename > typename T>
constexpr T< HeightTag > mir::geometry::operator- (T< HeightTag > lhs, T< DeltaYTag > rhs)
 
template<template< typename > typename T>
T< WidthTag > & mir::geometry::operator+= (T< WidthTag > &lhs, T< DeltaXTag > rhs)
 
template<template< typename > typename T>
T< HeightTag > & mir::geometry::operator+= (T< HeightTag > &lhs, T< DeltaYTag > rhs)
 
template<template< typename > typename T>
T< WidthTag > & mir::geometry::operator-= (T< WidthTag > &lhs, T< DeltaXTag > rhs)
 
template<template< typename > typename T>
T< HeightTag > & mir::geometry::operator-= (T< HeightTag > &lhs, T< DeltaYTag > rhs)
 
template<template< typename > typename T>
constexpr T< WidthTag > mir::geometry::operator+ (T< WidthTag > lhs, T< WidthTag > rhs)
 
template<template< typename > typename T>
constexpr T< HeightTag > mir::geometry::operator+ (T< HeightTag > lhs, T< HeightTag > rhs)
 
template<template< typename > typename T>
T< WidthTag > & mir::geometry::operator+= (T< WidthTag > &lhs, T< WidthTag > rhs)
 
template<template< typename > typename T>
T< HeightTag > & mir::geometry::operator+= (T< HeightTag > &lhs, T< HeightTag > rhs)
 
template<template< typename > typename T>
constexpr T< DeltaXTag > mir::geometry::operator- (T< XTag > lhs, T< XTag > rhs)
 
template<template< typename > typename T>
constexpr T< DeltaYTag > mir::geometry::operator- (T< YTag > lhs, T< YTag > rhs)
 
template<template< typename > typename T>
constexpr T< DeltaXTag > mir::geometry::operator- (T< WidthTag > lhs, T< WidthTag > rhs)
 
template<template< typename > typename T>
constexpr T< DeltaYTag > mir::geometry::operator- (T< HeightTag > lhs, T< HeightTag > rhs)
 
template<template< typename > typename T, typename Scalar >
constexpr T< WidthTag > mir::geometry::operator* (Scalar scale, T< WidthTag > const &w)
 
template<template< typename > typename T, typename Scalar >
constexpr T< HeightTag > mir::geometry::operator* (Scalar scale, T< HeightTag > const &h)
 
template<template< typename > typename T, typename Scalar >
constexpr T< DeltaXTag > mir::geometry::operator* (Scalar scale, T< DeltaXTag > const &dx)
 
template<template< typename > typename T, typename Scalar >
constexpr T< DeltaYTag > mir::geometry::operator* (Scalar scale, T< DeltaYTag > const &dy)
 
template<template< typename > typename T, typename Scalar >
constexpr T< WidthTag > mir::geometry::operator* (T< WidthTag > const &w, Scalar scale)
 
template<template< typename > typename T, typename Scalar >
constexpr T< HeightTag > mir::geometry::operator* (T< HeightTag > const &h, Scalar scale)
 
template<template< typename > typename T, typename Scalar >
constexpr T< DeltaXTag > mir::geometry::operator* (T< DeltaXTag > const &dx, Scalar scale)
 
template<template< typename > typename T, typename Scalar >
constexpr T< DeltaYTag > mir::geometry::operator* (T< DeltaYTag > const &dy, Scalar scale)
 
template<template< typename > typename T, typename Scalar >
constexpr T< WidthTag > mir::geometry::operator/ (T< WidthTag > const &w, Scalar scale)
 
template<template< typename > typename T, typename Scalar >
constexpr T< HeightTag > mir::geometry::operator/ (T< HeightTag > const &h, Scalar scale)
 
template<template< typename > typename T, typename Scalar >
constexpr T< DeltaXTag > mir::geometry::operator/ (T< DeltaXTag > const &dx, Scalar scale)
 
template<template< typename > typename T, typename Scalar >
constexpr T< DeltaYTag > mir::geometry::operator/ (T< DeltaYTag > const &dy, Scalar scale)
 
template<template< typename > typename T>
constexpr T< WidthTag > mir::geometry::as_width (T< DeltaXTag > const &dx)
 
template<template< typename > typename T>
constexpr T< HeightTag > mir::geometry::as_height (T< DeltaYTag > const &dy)
 
template<template< typename > typename T>
constexpr T< XTag > mir::geometry::as_x (T< DeltaXTag > const &dx)
 
template<template< typename > typename T>
constexpr T< YTag > mir::geometry::as_y (T< DeltaYTag > const &dy)
 
template<template< typename > typename T>
constexpr T< DeltaXTag > mir::geometry::as_delta (T< XTag > const &x)
 
template<template< typename > typename T>
constexpr T< DeltaYTag > mir::geometry::as_delta (T< YTag > const &y)
 
template<template< typename > typename T>
constexpr T< XTag > mir::geometry::as_x (T< WidthTag > const &w)
 
template<template< typename > typename T>
constexpr T< YTag > mir::geometry::as_y (T< HeightTag > const &h)
 
template<template< typename > typename T>
constexpr T< WidthTag > mir::geometry::as_width (T< XTag > const &x)
 
template<template< typename > typename T>
constexpr T< HeightTag > mir::geometry::as_height (T< YTag > const &y)
 
template<template< typename > typename T>
constexpr T< DeltaXTag > mir::geometry::as_delta (T< WidthTag > const &w)
 
template<template< typename > typename T>
constexpr T< DeltaYTag > mir::geometry::as_delta (T< HeightTag > const &h)
 
template<typename Target , typename Source >
constexpr Target mir::geometry::dim_cast (Source s)
 

Copyright © 2012-2021 Canonical Ltd.
Generated on Thu Jun 24 19:55:23 UTC 2021
This documentation is licensed under the GPL version 2 or 3.