neuray API Programmer's Manual

iimage_plugin.h File Reference

Description

Image plugin API.

Code Example

iimage_plugin.h

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

#ifndef MI_NEURAYLIB_IIMAGE_PLUGIN_H
#define MI_NEURAYLIB_IIMAGE_PLUGIN_H

#include <mi/base/interface_declare.h>
#include <mi/base/plugin.h>
#include <mi/base/types.h>
#include <mi/neuraylib/iimpexp_base.h>

namespace mi {

class IMap;

namespace neuraylib {

class IImage_file;
class IPlugin_api;
class IReader;
class ITile;
class IWriter;


#define MI_NEURAY_IMAGE_PLUGIN_TYPE "image v38"

class IImage_plugin : public base::Plugin
{
public:
    virtual const char* get_name() const = 0;

    virtual bool init( IPlugin_api* plugin_api) = 0;

    virtual bool exit( IPlugin_api* plugin_api) = 0;

    virtual const char* get_file_extension( Uint32 index) const = 0;

    virtual const char* get_supported_type( Uint32 index) const = 0;

    virtual Impexp_priority 
               get_priority() const = 0;

    virtual bool supports_selectors() const = 0;

    virtual bool test( IReader* reader) const = 0;

    virtual IImage_file* open_for_reading( IReader* reader, const char* selector) const = 0;

    virtual IImage_file* open_for_writing(
        IWriter* writer,
        const char* pixel_type,
        Uint32 resolution_x,
        Uint32 resolution_y,
        Uint32 nr_of_layers,
        Uint32 miplevels,
        bool is_cubemap,
        Float32 gamma,
        const IMap* export_options) const = 0;
};

class IImage_file
  : public base::Interface_declare<0x26db4186,0xace2,0x42e8,0xa0,0x3d,0xe0,0xfa,0xfc,0xed,0x05,0xf3>
{
public:
    virtual const char* get_type() const = 0;

    virtual Uint32 
               get_resolution_x( Uint32 level) const = 0;

    virtual Uint32 
               get_resolution_y( Uint32 level) const = 0;

    virtual Uint32 
               get_layers_size( Uint32 level) const = 0;

    virtual Uint32 
               get_miplevels() const = 0;

    virtual bool get_is_cubemap() const = 0;

    virtual Float32 
               get_gamma() const = 0;

    virtual ITile* read( Uint32 z, Uint32 level) const = 0;

    virtual bool write( const ITile* tile, Uint32 z, Uint32 level) = 0;
};
 // end group mi_neuray_plugins

} // namespace neuraylib

} // namespace mi

#endif // MI_NEURAYLIB_IIMAGE_PLUGIN_H

Namespaces

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

Classes

class 
Abstract interface for image files. More...
class 
Abstract interface for image plugins. More...

Defines

#define  "image v38"
Type of image plugins. More...