neuray API Programmer's Manual

imdl_discovery_api.h File Reference

Description

API component to discover MDL content in archives and file systems.

Code Example

imdl_discovery_api.h

‎/***************************************************************************************************
 * Copyright 2023 NVIDIA Corporation. All rights reserved.
 **************************************************************************************************/

#ifndef MI_NEURAYLIB_IMDL_DISCOVERY_API_H 
#define MI_NEURAYLIB_IMDL_DISCOVERY_API_H 

#include <mi/base/interface_declare.h>

namespace mi {

class IString;

namespace neuraylib {


class IMdl_info : public 
    base::Interface_declare<0xd2f50312,0xe76c,0x4d64,0xa5,0x91,0xcb,0x70,0x38,0x2c,0xa9,0x9f>
{
public:

    enum Kind {  
        DK_PACKAGE = 0,
        DK_MODULE = 1,
        DK_XLIFF = 2,
        DK_TEXTURE = 4,
        DK_LIGHTPROFILE = 8,
        DK_MEASURED_BSDF = 16,
        DK_DIRECTORY = 32,
        // next = 64
        DK_ALL = 0xffffffffU
    };

    virtual Kind                    
               get_kind() const = 0;

    virtual const char*             get_qualified_name() const = 0;

    virtual const char*             get_simple_name() const = 0;   
};

mi_static_assert(sizeof(IMdl_info::Kind) == sizeof(Uint32));

class IMdl_module_info : public
    base::Interface_declare<0x22,0x1204,0x46,0xb1,0x5b,0xbf,0xa8,0x11,0xc7,0xe7,0xe1,IMdl_info>
        
{
public:

    virtual Size                    
               get_search_path_index() const = 0;

    virtual const char*             get_search_path() const = 0;

    virtual const IString*          get_resolved_path() const = 0;

    virtual Size                    
               get_shadows_count() const = 0; 

    virtual const IMdl_module_info* get_shadow(Size index) const = 0;

    virtual bool                    in_archive() const = 0;
};

class IMdl_xliff_info : public
    base::Interface_declare<0x3a,0xdf,0x8a,0x42,0x94,0x09,0x59,0xe6,0xf9,0x25,0x67,IMdl_info>
{
public:

    virtual const char*          get_resolved_path() const = 0;

    virtual Size                 
               get_search_path_index() const = 0;

    virtual const char*          get_search_path() const = 0;

    virtual bool                 in_archive() const = 0;
};

class IMdl_resource_info : public
    base::Interface_declare<0x28,0x54,0x6b,0xcd,0x14,0x59,0xfd,0x42,0x9d,0xfa,0xd5,IMdl_info>
{
public:

    virtual Size                    
               get_search_path_index() const = 0;

    virtual const char*             get_search_path() const = 0;

    virtual const char*             get_extension() const = 0;

    virtual const char*             get_resolved_path() const = 0;

    virtual Size                    
               get_shadows_count() const = 0;

    virtual const IMdl_resource_info* get_shadow(Size index) const = 0;

    virtual bool                    in_archive() const = 0;
};


class IMdl_texture_info : public
    base::Interface_declare<0x62,0x71,0xac,0x50,0xde,0xa9,0x40,0x92,0x8b,0xf0,0x1d,
                            IMdl_resource_info>
{
};

class IMdl_lightprofile_info : public
    base::Interface_declare<0x17,0x23,0x61,0xf4,0xcb,0x64,0xb3,0x40,0xb4,0x45,0x07,
                            IMdl_resource_info>
{
};

class IMdl_measured_bsdf_info : public
    base::Interface_declare<0xce,0x45,0xe6,0xef,0xdc,0x74,0x00,0x4f,0xac,0xae,0x34,
                            IMdl_resource_info>
{
};

class IMdl_package_info : public
    base::Interface_declare<0x94d,0x66,0x47a,0xb0,0xc3,0x7b,0x68,0xba,0x40,0xde,0x06,IMdl_info>
{
public:

    virtual Size                    
               get_child_count() const = 0;

    virtual const IMdl_info*        get_child(Size index) const = 0;    

    virtual Size                    
               get_search_path_index_count() const = 0;

    virtual Size                    
               get_search_path_index(Size index) const = 0;

    virtual const char*             get_search_path(Size index) const = 0;

    virtual const IString*          get_resolved_path(Size index) const = 0;

    virtual bool                    in_archive(Size index) const = 0;
};


class IMdl_discovery_result : public
    base::Interface_declare<0xe3c1bc1a,0xb1db,0x4c8c,0xba,0x41,0x37,0xed,0x87,0xb7,0x86,0xb8>
{
public:

    virtual const IMdl_package_info*    get_graph() const = 0;

    virtual Size                        
               get_search_paths_count() const = 0;

    virtual const char*                 get_search_path(Size index) const = 0;
};

class IMdl_discovery_api : public
    base::Interface_declare<0x208aa1f2,0x08bc,0x4c81,0x8b,0x0f,0x54,0xba,0x4a,0x61,0xe9,0xd8>
{
public:

    virtual const IMdl_discovery_result*  discover(
        Uint32 filter = static_cast<Uint32>(IMdl_info::DK_ALL)) const = 0;
};

} // namespace neuraylib

} // namespace mi

#endif // MI_NEURAYLIB_IMDL_DISCOVERY_API_H

Namespaces

namespace 
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH. More...
namespace 
Namespace for the neuray API. More...

Classes

class 
Interface for the discovery API. More...
class 
Interface for the discovery result. More...
class 
Abstract interface for a discovery graph node. More...
class 
Interface for lightprofile files. More...
class 
Interface for measured bsdf files. More...
class 
Interface for a graph node representing an MDL module. More...
class 
Interface for a graph node representing an MDL package. More...
class 
Interface for resources. More...
class 
Interface for texture files. More...
class 
Interface for xliff files. More...