///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018, 2020-2022 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  chicommontypes.h
/// @brief Defines Chi Common Types
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef CHICOMMONTYPES_H
#define CHICOMMONTYPES_H

#include "camxcdktypes.h"

#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus

/** @addtogroup chi_common_datatypes
@{ */

/// @brief Describes the rectangle coordinates and dimensions.
typedef struct
{
    INT32   left;   ///< X coordinate of the rectangle.
    INT32   top;    ///< Y coordinate of the rectangle.
    INT32   width;  ///< Width of the rectangle.
    INT32   height; ///< Height of the rectangle.
} CHIRectangle;

/// @brief Defines the generic two-dimensional values for a rectangle.
typedef struct
{
    UINT32  width;  ///< Width of the rectangle.
    UINT32  height; ///< Height of the rectangle.
} CHIDimension;

/// @brief Represents a pixel.
typedef struct
{
    INT32   x;  ///< X coordinate of the point.
    INT32   y;  ///< Y coordinate of the point.
} CHIPoint;

/// @brief Represents a float pixel.
typedef struct
{
    FLOAT   x;  ///< X coordinate of the point.
    FLOAT   y;  ///< Y coordinate of the point.
} CHIPointF;

/// @brief Defines the date and time parameters.
struct CHIDateTime
{
    UINT32  seconds;                    ///< Seconds after the minute: 0 through 61*.
    UINT64  microseconds;               ///< Microseconds: 0 through 999999.
    UINT32  minutes;                    ///< Time in minutes: 0 through 59.
    UINT32  hours;                      ///< Time in hours: 0 through 23.
    UINT32  dayOfMonth;                 ///< Day of month: 1 through 31.
    UINT32  month;                      ///< Months since January: 0 through 11, where 0 is January.
    UINT32  year;                       ///< Year since 1900.
    UINT32  weekday;                    ///< Day of week: 0 through 6, where 0 is Sunday.
    UINT32  yearday;                    ///< Day of year: 0 through 365.
    UINT32  dayLightSavingTimeFlag;     ///< Flag for Daylight Savings Time, where 1 enables DST.
};

/** @} */ /* end_addtogroup chi_common_datatypes */

#ifdef __cplusplus
}
#endif // __cplusplus

#endif // CHICOMMON_H

