15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)/* From pp_rect.idl modified Tue Jun  3 12:31:06 2014. */
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PP_RECT_H_
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PP_RECT_H_
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_point.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_size.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the APIs for creating a 2 dimensional rectangle.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Structs
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PP_Rect</code> struct contains the size and location of a 2D
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * rectangle.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_Rect {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This value represents the x and y coordinates of the upper-left corner of
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the rectangle.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_Point point;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /** This value represents the width and height of the rectangle. */
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_Size size;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_Rect, 16);
4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)/**
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * The <code>PP_FloatRect</code> struct contains the size and location of a 2D
4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * rectangle.
4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) */
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)struct PP_FloatRect {
4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /**
4746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)   * This value represents the x and y coordinates of the upper-left corner of
4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)   * the rectangle.
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)   */
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  struct PP_FloatPoint point;
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /** This value represents the width and height of the rectangle. */
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  struct PP_FloatSize size;
5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)};
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Functions
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PP_MakeRectFromXYWH() creates a <code>PP_Rect</code> given x and y
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * coordinates and width and height dimensions as int32_t values.
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] x An int32_t value representing a horizontal coordinate of a
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * point, starting with 0 as the left-most coordinate.
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] y An int32_t value representing a vertical coordinate of a point,
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * starting with 0 as the top-most coordinate.
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] w An int32_t value representing a width.
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] h An int32_t value representing a height.
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Rect</code> structure.
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_INLINE struct PP_Rect PP_MakeRectFromXYWH(int32_t x, int32_t y,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             int32_t w, int32_t h) {
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_Rect ret;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ret.point.x = x;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ret.point.y = y;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ret.size.width = w;
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ret.size.height = h;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return ret;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
8746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)/**
8846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * PP_MakeFloatRectFromXYWH() creates a <code>PP_FloatRect</code> given x and y
8946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * coordinates and width and height dimensions as float values.
9046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) *
9146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * @param[in] x An float value representing a horizontal coordinate of a
9246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * point, starting with 0 as the left-most coordinate.
9346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * @param[in] y An float value representing a vertical coordinate of a point,
9446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * starting with 0 as the top-most coordinate.
9546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * @param[in] w An float value representing a width.
9646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * @param[in] h An float value representing a height.
9746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) *
9846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * @return A <code>PP_FloatRect</code> structure.
9946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) */
10046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)PP_INLINE struct PP_FloatRect PP_MakeFloatRectFromXYWH(float x, float y,
10146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                                       float w, float h) {
10246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  struct PP_FloatRect ret;
10346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ret.point.x = x;
10446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ret.point.y = y;
10546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ret.size.width = w;
10646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ret.size.height = h;
10746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return ret;
10846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
10946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  /* PPAPI_C_PP_RECT_H_ */
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
116