/******************************************************************************
 * Copyright 2025 NVIDIA Corporation. All rights reserved.
 *****************************************************************************/
/// \file
/// \brief Base class representing the fonts in the scene description.

#ifndef NVIDIA_INDEX_IFONT_H
#define NVIDIA_INDEX_IFONT_H

#include <mi/base/interface_declare.h>
#include <mi/dice.h>

#include <nv/index/iattribute.h>

namespace nv
{
namespace index
{


/// A font attribute describes the appearance of a label
/// in the scene description. 
///
/// \ingroup nv_index_scene_description_attribute
///
class IFont :
        public mi::base::Interface_declare<0xde2a47e9,0xa0b3,0x4b47,0xb2,0xc6,0x8f,0x22,0x6c,0x36,0x02,0x61,
                                           nv::index::IAttribute>
{
public:
    /// Set the font file name.
    ///
    /// \param          font_file_name      Unix style path to the font file.
    /// \return false when the specified font path doesn't found on
    /// the system when this method is called. However the path will
    /// be set.
    ///
    virtual bool set_file_name(const char* font_file_name) = 0;

    /// Returns the font file name.
    ///
    /// \return         Unix style path to the font file.
    ///
    virtual const char* get_file_name() const = 0;
    
    /// Set the font resolution. The resolution of the font defines
    /// the resolution of the bitmap generated for the labels, thus,
    /// influences the visual quality of the labels. The recommended
    /// useful range of this size is in [16, 1024].
    ///
    /// \param       resolution  The font resolution in pixels.
    /// \return true when set is succeeded.
    ///
    virtual bool set_font_resolution(mi::Float32 resolution) = 0;

    /// Get the resolution of the font. The resolution of the font
    /// defines the resolution of the bitmap generated for the
    /// labels, thus, influences the visual quality of the labels.
    ///
    /// \return         The font resolution in pixels.
    ///
    virtual mi::Float32 get_font_resolution() const = 0;
};

}} // namespace index / nv

#endif // NVIDIA_INDEX_IFONT_H
