    /***************************************************************************
                              blender.h  -  description
                                 -------------------
        begin                : Thu Dec 7 2000
        copyright            : (C) 2000 by Jan Walter
        email                : jan@blender.nl
     ***************************************************************************/

    /***************************************************************************
     *                                                                         *
     *   This program is free software; you can redistribute it and/or modify  *
     *   it under the terms of the GNU General Public License as published by  *
     *   the Free Software Foundation; either version 2 of the License, or     *
     *   (at your option) any later version.                                   *
     *                                                                         *
     ***************************************************************************/

    #ifndef BLENDER_H
    #define BLENDER_H

    struct PyObject;

    /**This is in fact no class it is a module in Python. But I use it here as a class to document the global functions availabe in the Blender module.
      *@author Jan Walter
      */

    class Blender {
    public:
    	Blender();
    	~Blender();
      /** This reflects what happens if you press SPACE in Blender and select ADD->Mesh. The type string is one of the strings shown in Blender's submenu ("Plane", "Cube", etc.). */
      PyObject* addMesh(const char* type);
      /** This should connect things like it is shown in the OOPS window. At the moment you can only connect objects with meshes and scenes with objects. This is likely to change in the future. */
      PyObject* connect(PyObject* obj1, PyObject* obj2);
      /** Even if you can't see the connected data to an camera object in the OOPS window yet you can get access to the camera settings by calling this function with the name of the camera data. */
      PyObject* getCamera(const char* name);
      /** Gives access to the current scene. For export scripts this should be one of the first things you should do. The names of the objects in the scene are stored and you can step through this names and get access to the associated data by calling getObject(name). */
      PyObject* getCurrentScene();
      /** Because you can't create instances of the class DisplaySettings you have to call this function to create one for you. Then you can retrieve the data from the returned instance. */
      PyObject* getDisplaySettings();
      /** Gets the filename (including the path) of the current file. */
      PyObject* getFilename();
      /** Gives access to the lamp data by using the unique name. */
      PyObject* getLamp(const char* name);
      /** Get access to data linked to a script in the script buttons. This can be: Object, Camera, Lamp, Material, and World. */
      PyObject* getLinkedData();
      /** Gives access to the material data by using the unique name. */
      PyObject* getMaterial(const char* name);
      /** Gives access to the mesh data by using the unique name. */
      PyObject* getMesh(const char* name);
      /** Gives access to the object data by using the unique name. */
      PyObject* getObject(const char* name);
      /** If you want to check if the connected data to this object (with this name) is really a camera use this function. */
      PyObject* isCamera(const char* name);
      /** If you want to check if the connected data to this object (with this name) is really a lamp use this function. */
      PyObject* isLamp(const char* name);
      /** If you want to check if the connected data to this object (with this name) is really a mesh use this function. */
      PyObject* isMesh(const char* name);
      /** This functions loads a BLEND file. The string should contain the filename and the path. */
      PyObject* loadFile(const char* filename);
      /** If you want to export an animation you have to step through all the frames. This function allows you to do so and updates all objects which have some IPOs (InterPOlation curves) connected. */
      PyObject* setCurrentFrame(int frame);
    };

    #endif