namespace Quik.Media
{
    /// <summary>
    /// Glyph properties with metrics based on FreeType glyph metrics.
    /// </summary>
    public struct QGlyphMetrics
    {
        /// <summary>
        /// The code point for the character.
        /// </summary>
        public int Rune { get; }

        /// <summary>
        /// Location of the glyph on the atlas.
        /// </summary>
        public QRectangle Location { get; }

        /// <summary>
        /// Size of the glyph in units.
        /// </summary>
        public QVec2 Size { get; }

        /// <summary>
        /// Bearing vector for horizontal layout.
        /// </summary>
        public QVec2 HorizontalBearing { get; }

        /// <summary>
        /// Bearing vector for vertical layout.
        /// </summary>
        public QVec2 VerticalBearing { get; }

        /// <summary>
        /// Advance vector for vertical and horizontal layouts.
        /// </summary>
        public QVec2 Advance { get; }

        public QGlyphMetrics(
            int character,
            QRectangle location,
            QVec2 size,
            QVec2 horizontalBearing,
            QVec2 verticalBearing,
            QVec2 advance)
        {
            Rune = character;
            Location = location;
            Size = size;
            HorizontalBearing = horizontalBearing;
            VerticalBearing = verticalBearing;
            Advance = advance;
        }
    }
}