[fuchsia.math] Document fuchsia.math
Test: Just docs
Change-Id: I132d8795688f1fdae77cfb6b9b0aeebafce14d08
diff --git a/sdk/fidl/fuchsia.math/math.fidl b/sdk/fidl/fuchsia.math/math.fidl
index b0e7838..c398fca 100644
--- a/sdk/fidl/fuchsia.math/math.fidl
+++ b/sdk/fidl/fuchsia.math/math.fidl
@@ -4,76 +4,286 @@
library fuchsia.math;
+/// An integer position in a 2D cartesian space.
+///
+/// This type does not specify units. Protocols that use this type should
+/// specify the characteristics of the vector space, including orientation and
+/// units.
struct Point {
+ /// The number of units along the x-axis.
int32 x;
+
+ /// The number of units along the y-axis.
int32 y;
};
+/// A floating point position in a 2D cartesian space.
+///
+/// This type does not specify units. Protocols that use this type should
+/// specify the characteristics of the vector space, including orientation and
+/// units.
struct PointF {
+ /// The number of units along the x-axis.
float32 x;
+
+ /// The number of units along the y-axis.
float32 y;
};
+/// A floating point position in a 3D cartesian space.
+///
+/// This type does not specify units. Protocols that use this type should
+/// specify the characteristics of the vector space, including orientation and
+/// units.
struct Point3F {
+ /// The number of units along the x-axis.
float32 x;
+
+ /// The number of units along the y-axis.
float32 y;
+
+ /// The number of units along the z-axis.
float32 z;
};
+/// The integer dimensions of a rectangular region in a 2D cartesian space.
+///
+/// This type does not specify units. Protocols that use this type should
+/// specify the characteristics of the vector space, including orientation and
+/// units.
+///
+/// This type allows for negative dimensions, to which protocols can give
+/// semantics. Protocols that use this type should specify whether negative
+/// dimensions are meaningful, and, if they are meaningful, what they mean.
struct Size {
+ /// The distance along the x-axis.
int32 width;
+
+ /// The distance along the y-axis.
int32 height;
};
+/// The floating point dimensions of a rectangular region in a 2D cartesian
+/// space.
+///
+/// This type does not specify units. Protocols that use this type should
+/// specify the characteristics of the vector space, including orientation and
+/// units.
+///
+/// This type allows for negative dimensions, to which protocols can give
+/// semantics. Protocols that use this type should specify whether negative
+/// dimensions are meaningful, and, if they are meaningful, what they mean.
struct SizeF {
+ /// The distance along the x-axis.
float32 width;
+
+ /// The distance along the y-axis.
float32 height;
};
+/// An integral, rectangular, axis-aligned region in a 2D cartesian
+/// space.
+///
+/// This type does not specify units. Protocols that use this type should
+/// specify the characteristics of the vector space, including orientation and
+/// units.
struct Rect {
+ /// The location of the origin of the rectangle in the x-axis.
int32 x;
+
+ /// The location of the origin of the rectangle in the y-axis.
int32 y;
+
+ /// The distance along the x-axis.
+ ///
+ /// If `width` is positive, the region includes x values starting at `x` and
+ /// increasing along the x-axis. If `width` is negative, the region includes
+ /// x values starting at `x` and decreasing along the x-axis.
int32 width;
+
+ /// The distance along the y-axis.
+ ///
+ /// If `height` is positive, the region includes y values starting at `y`
+ /// and increasing along the y-axis. If `height` is negative, the region
+ /// includes y values starting at `y` and decreasing along the y-axis.
int32 height;
};
+/// A floating point, rectangular, axis-aligned region in a 2D cartesian
+/// space.
+///
+/// This type does not specify units. Protocols that use this type should
+/// specify the characteristics of the vector space, including orientation and
+/// units.
struct RectF {
+ /// The location of the origin of the rectangle in the x-axis.
float32 x;
+
+ /// The location of the origin of the rectangle in the y-axis.
float32 y;
+
+ /// The distance along the x-axis.
+ ///
+ /// If `width` is positive, the region includes x values starting at `x` and
+ /// increasing along the x-axis. If `width` is negative, the region includes
+ /// x values starting at `x` and decreasing along the x-axis.
float32 width;
+
+ /// The distance along the y-axis.
+ ///
+ /// If `height` is positive, the region includes y values starting at `y`
+ /// and increasing along the y-axis. If `height` is negative, the region
+ /// includes y values starting at `y` and decreasing along the y-axis.
float32 height;
};
+/// A floating point rounded rectangle with the custom radii for all four
+/// corners.
+///
+/// A region in a 2D cartesian space consisting of linear, axis-aligned sides
+/// with corners rounded into a quarter ellipse.
+///
+/// If the quarter ellipses in two corners would overlap, their radii are
+/// clamped such that the ellipses meet with an axis-aligned tangent.
+///
+/// This type does not specify units. Protocols that use this type should
+/// specify the characteristics of the vector space, including orientation and
+/// units.
struct RRectF {
+ /// The location of the origin of the region in the x-axis.
float32 x;
+
+ /// The location of the origin of the region in the y-axis.
float32 y;
+
+ /// The distance along the x-axis.
+ ///
+ /// If `width` is positive, the region includes x values starting at `x` and
+ /// increasing along the x-axis. If `width` is negative, the region includes
+ /// x values starting at `x` and decreasing along the x-axis.
float32 width;
+
+ /// The distance along the y-axis.
+ ///
+ /// If `height` is positive, the region includes y values starting at `y`
+ /// and increasing along the y-axis. If `height` is negative, the region
+ /// includes y values starting at `y` and decreasing along the y-axis.
float32 height;
+
+ /// The radius of the quarter ellipse in the top-left corner along the
+ /// x-axis.
+ ///
+ /// Must not be negative.
float32 top_left_radius_x;
+
+ /// The radius of the quarter ellipse in the top-left corner along the
+ /// y-axis.
+ ///
+ /// Must not be negative.
float32 top_left_radius_y;
+
+ /// The radius of the quarter ellipse in the top-right corner along the
+ /// x-axis.
+ ///
+ /// Must not be negative.
float32 top_right_radius_x;
+
+ /// The radius of the quarter ellipse in the top-right corner along the
+ /// y-axis.
+ ///
+ /// Must not be negative.
float32 top_right_radius_y;
+
+ /// The radius of the quarter ellipse in the bottom-left corner along the
+ /// x-axis.
+ ///
+ /// Must not be negative.
float32 bottom_left_radius_x;
+
+ /// The radius of the quarter ellipse in the bottom-left corner along the
+ /// y-axis.
+ ///
+ /// Must not be negative.
float32 bottom_left_radius_y;
+
+ /// The radius of the quarter ellipse in the bottom-right corner along the
+ /// x-axis.
+ ///
+ /// Must not be negative.
float32 bottom_right_radius_x;
+
+ /// The radius of the quarter ellipse in the bottom-right corner along the
+ /// y-axis.
+ ///
+ /// Must not be negative.
float32 bottom_right_radius_y;
};
+/// A projective transformation of a 3D cartesian space.
+///
+/// A transform consists of a 4x4 matrix that operates in homogeneous
+/// coordinates. For example, a point located at (x, y, z) in the cartesian
+/// space is transformed by `M` to a point located at (x'/w', y'/w', z'/w'),
+/// where `(x', y', z', w') = M (x, y, z, 1)`.
struct Transform {
- // Row major order.
+ /// The entries in the transformation matrix in row major order.
+ ///
+ /// Specifically, if the matrix is as follows:
+ ///
+ /// ```
+ /// a b c d
+ /// e f g h
+ /// i j k l
+ /// m n o p
+ /// ```
+ ///
+ /// then the entries in this array are
+ /// `(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)`.
array<float32>:16 matrix;
};
+/// An integer offset to apply to each edge of a rectangle.
+///
+/// This type does not specify units. Protocols that use this type should
+/// specify the characteristics of the vector space, including orientation and
+/// units.
struct Inset {
+ /// The amount to move the top edge of the rectangle towards the center of
+ /// the rectangle.
int32 top;
+
+ /// The amount to move the right edge of the rectangle towards the center of
+ /// the rectangle.
int32 right;
+
+ /// The amount to move the bottom edge of the rectangle towards the center
+ /// of the rectangle.
int32 bottom;
+
+ /// The amount to move the left edge of the rectangle towards the center of
+ /// the rectangle.
int32 left;
};
+/// A floating point offset to apply to each edge of a rectangle.
+///
+/// This type does not specify units. Protocols that use this type should
+/// specify the characteristics of the vector space, including orientation and
+/// units.
struct InsetF {
+ /// The amount to move the top edge of the rectangle towards the center of
+ /// the rectangle.
float32 top;
+
+ /// The amount to move the right edge of the rectangle towards the center of
+ /// the rectangle.
float32 right;
+
+ /// The amount to move the bottom edge of the rectangle towards the center
+ /// of the rectangle.
float32 bottom;
+
+ /// The amount to move the left edge of the rectangle towards the center of
+ /// the rectangle.
float32 left;
};