29template <
typename SIZE_BASE_TYPE,
typename POINT_BASE_TYPE,
typename RECTANGLE_BASE_TYPE >
32template <
typename POINT_BASE_TYPE,
typename SIZE_BASE_TYPE,
typename RECTANGLE_BASE_TYPE >
35template <
typename RECTANGLE_BASE_TYPE,
typename POINT_TYPE,
typename SIZE_TYPE >
38template <
typename POINT_TYPE >
46inline ::i32 area(::i32 cx, ::i32 cy) {
return (cx < 0 && cy < 0 ? -1 : 1) * cx * cy; }
47inline ::i64 area(::i64 cx, ::i64 cy) {
return (cx < 0 && cy < 0 ? -1 : 1) * cx * cy; }
48inline ::f64 area(::f64 cx, ::f64 cy) {
return (cx < 0. && cy < 0. ? -1. : 1.) * cx * cy; }
54struct ::i64_rectangle;
69struct ::i64_rectangle;
72struct ::f64_rectangle;
86template < prototype_integral INTEGRAL1, prototype_integral INTEGRAL2, prototype_integral INTEGRAL3, prototype_integral INTEGRAL_RESULT = typename ::largest_type_of_3 < INTEGRAL1, INTEGRAL2, INTEGRAL3 >::type >
87inline INTEGRAL_RESULT muldiv(INTEGRAL1 i, INTEGRAL2 iNumerator, INTEGRAL3 iDenominator);
90template < prototype_rectangle RECTANGLE >
91inline auto width(
const RECTANGLE & rectangle) {
return rectangle.right - rectangle.left; }
93template < prototype_rectangle RECTANGLE >
94inline auto height(
const RECTANGLE & rectangle) {
return rectangle.bottom - rectangle.top; }
96template < prototype_rectangle RECTANGLE >
97inline auto area(
const RECTANGLE & rectangle) {
return maximum(width(rectangle), 0) * maximum(height(rectangle), 0); }
100template < prototype_rectangle RECTANGLE >
101inline auto left(
const RECTANGLE & rectangle) {
return rectangle.left; }
103template < prototype_rectangle RECTANGLE >
104inline auto top(
const RECTANGLE & rectangle) {
return rectangle.top; }
108template < prototype_XYDim XYDim >
109inline auto width(
const XYDim & rectangle) {
return rectangle.Width; }
111template < prototype_XYDim XYDim >
112inline auto height(
const XYDim & rectangle) {
return rectangle.Height; }
114template < prototype_XYDim XYDim >
115inline auto area(
const XYDim & rectangle) {
return maximum(rectangle.Width, 0) * maximum(rectangle.Height, 0); }
118template < prototype_XYDim XYDim >
119inline auto left(
const XYDim & rectangle) {
return rectangle.X; }
121template < prototype_XYDim XYDim >
122inline auto top(
const XYDim & rectangle) {
return rectangle.Y; }
241template < prototype_rectangle RECTANGLE >
242inline RECTANGLE & rate_deflate(RECTANGLE & rectangle, ::f64 dLeftRate, ::f64 dRightRate, ::f64 dTopRate, ::f64 dBottomRate);
280#include "_rectangle.h"
Definition point_array.h:25
Definition rectangle.h:49