Mir
Loading...
Searching...
No Matches
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

namespace  mir
 
namespace  mir::geometry
 Basic geometry types. Types for dimensions, displacements, etc. and the operations that they support.
 
namespace  mir::geometry::detail
 
namespace  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-2023 Canonical Ltd.
Generated on Tue Jan 24 16:42:22 UTC 2023
This documentation is licensed under the GPL version 2 or 3.