#ifndef EVAS_CANVAS3D_SCENE_IMPL_HH
#define EVAS_CANVAS3D_SCENE_IMPL_HH

#include "evas_canvas3d_scene.eo.hh"

namespace evas { namespace canvas3d { 
inline ::efl::eolian::return_traits< ::evas::canvas3d::Node>::type Scene::root_node_get() const
{
    ::Evas_Canvas3D_Node* __return_value =  ::evas_canvas3d_scene_root_node_get(_eo_ptr());
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits< ::evas::canvas3d::Node>::type>(__return_value);
}
inline ::efl::eolian::return_traits<void>::type Scene::root_node_set( ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type node) const
{
    ::evas_canvas3d_scene_root_node_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c< ::Evas_Canvas3D_Node*,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type>(node));
}
inline ::efl::eolian::return_traits< ::evas::canvas3d::Node>::type Scene::camera_node_get() const
{
    ::Evas_Canvas3D_Node* __return_value =  ::evas_canvas3d_scene_camera_node_get(_eo_ptr());
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits< ::evas::canvas3d::Node>::type>(__return_value);
}
inline ::efl::eolian::return_traits<void>::type Scene::camera_node_set( ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type node) const
{
    ::evas_canvas3d_scene_camera_node_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c< ::Evas_Canvas3D_Node*,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type>(node));
}
inline ::efl::eolian::return_traits<void>::type Scene::shadows_depth_get( ::efl::eolian::out_traits<Evas_Real>::type depth_offset,  ::efl::eolian::out_traits<Evas_Real>::type depth_constant) const
{
   Evas_Real __out_param_depth_offset = {};
   Evas_Real __out_param_depth_constant = {};
    ::evas_canvas3d_scene_shadows_depth_get(_eo_ptr()
      , & __out_param_depth_offset
      , & __out_param_depth_constant);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(depth_offset, __out_param_depth_offset);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(depth_constant, __out_param_depth_constant);
}
inline ::efl::eolian::return_traits<void>::type Scene::shadows_depth_set( ::efl::eolian::in_traits<Evas_Real>::type depth_offset,  ::efl::eolian::in_traits<Evas_Real>::type depth_constant) const
{
    ::evas_canvas3d_scene_shadows_depth_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(depth_offset)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(depth_constant));
}
inline ::efl::eolian::return_traits<void>::type Scene::size_set( ::efl::eolian::in_traits<int>::type w,  ::efl::eolian::in_traits<int>::type h) const
{
    ::evas_canvas3d_scene_size_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<int,  ::efl::eolian::in_traits<int>::type>(w)
      ,  ::efl::eolian::convert_to_c<int,  ::efl::eolian::in_traits<int>::type>(h));
}
inline ::efl::eolian::return_traits<void>::type Scene::size_get( ::efl::eolian::out_traits<int>::type w,  ::efl::eolian::out_traits<int>::type h) const
{
   int __out_param_w = {};
   int __out_param_h = {};
    ::evas_canvas3d_scene_size_get(_eo_ptr()
      , & __out_param_w
      , & __out_param_h);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<int>::type, int>(w, __out_param_w);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<int>::type, int>(h, __out_param_h);
}
inline ::efl::eolian::return_traits<void>::type Scene::background_color_set( ::efl::eolian::in_traits<Evas_Real>::type r,  ::efl::eolian::in_traits<Evas_Real>::type g,  ::efl::eolian::in_traits<Evas_Real>::type b,  ::efl::eolian::in_traits<Evas_Real>::type a) const
{
    ::evas_canvas3d_scene_background_color_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(r)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(g)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(b)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(a));
}
inline ::efl::eolian::return_traits<void>::type Scene::background_color_get( ::efl::eolian::out_traits<Evas_Real>::type r,  ::efl::eolian::out_traits<Evas_Real>::type g,  ::efl::eolian::out_traits<Evas_Real>::type b,  ::efl::eolian::out_traits<Evas_Real>::type a) const
{
   Evas_Real __out_param_r = {};
   Evas_Real __out_param_g = {};
   Evas_Real __out_param_b = {};
   Evas_Real __out_param_a = {};
    ::evas_canvas3d_scene_background_color_get(_eo_ptr()
      , & __out_param_r
      , & __out_param_g
      , & __out_param_b
      , & __out_param_a);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(r, __out_param_r);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(g, __out_param_g);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(b, __out_param_b);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(a, __out_param_a);
}
inline ::efl::eolian::return_traits<bool>::type Scene::pick( ::efl::eolian::in_traits<Evas_Real>::type x,  ::efl::eolian::in_traits<Evas_Real>::type y,  ::efl::eolian::out_traits< ::evas::canvas3d::Node>::type node,  ::efl::eolian::out_traits< ::evas::canvas3d::Mesh>::type mesh,  ::efl::eolian::out_traits<Evas_Real>::type s,  ::efl::eolian::out_traits<Evas_Real>::type t) const
{
    ::Evas_Canvas3D_Node* __out_param_node = {};
    ::Evas_Canvas3D_Mesh* __out_param_mesh = {};
   Evas_Real __out_param_s = {};
   Evas_Real __out_param_t = {};
   Eina_Bool __return_value =  ::evas_canvas3d_scene_pick(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(x)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(y)
      , & __out_param_node
      , & __out_param_mesh
      , & __out_param_s
      , & __out_param_t);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits< ::evas::canvas3d::Node>::type,  ::Evas_Canvas3D_Node*>(node, __out_param_node);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits< ::evas::canvas3d::Mesh>::type,  ::Evas_Canvas3D_Mesh*>(mesh, __out_param_mesh);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(s, __out_param_s);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(t, __out_param_t);
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits< ::evas::canvas3d::Node>::type Scene::exist( ::efl::eolian::in_traits<Evas_Real>::type x,  ::efl::eolian::in_traits<Evas_Real>::type y,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type node) const
{
    ::Evas_Canvas3D_Node* __return_value =  ::evas_canvas3d_scene_exist(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(x)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(y)
      ,  ::efl::eolian::convert_to_c< ::Evas_Canvas3D_Node*,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type>(node));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits< ::evas::canvas3d::Node>::type>(__return_value);
}
inline ::efl::eolian::return_traits<  ::efl::eina::range_list< ::evas::canvas3d::Node>>::type Scene::pick_member_list_get( ::efl::eolian::in_traits<Evas_Real>::type x,  ::efl::eolian::in_traits<Evas_Real>::type y) const
{
   Eina_List * __return_value =  ::evas_canvas3d_scene_pick_member_list_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(x)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(y));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<  ::efl::eina::range_list< ::evas::canvas3d::Node>>::type>(__return_value);
}
inline ::efl::eolian::return_traits<void>::type Scene::shadows_enable_set( ::efl::eolian::in_traits<bool>::type shadows_enabled) const
{
    ::evas_canvas3d_scene_shadows_enable_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Eina_Bool,  ::efl::eolian::in_traits<bool>::type>(shadows_enabled));
}
inline ::efl::eolian::return_traits<bool>::type Scene::shadows_enable_get() const
{
   Eina_Bool __return_value =  ::evas_canvas3d_scene_shadows_enable_get(_eo_ptr());
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits<bool>::type Scene::color_pick_enable_get() const
{
   Eina_Bool __return_value =  ::evas_canvas3d_scene_color_pick_enable_get(_eo_ptr());
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits<bool>::type Scene::color_pick_enable_set( ::efl::eolian::in_traits<bool>::type color_pick) const
{
   Eina_Bool __return_value =  ::evas_canvas3d_scene_color_pick_enable_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Eina_Bool,  ::efl::eolian::in_traits<bool>::type>(color_pick));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
} } 
namespace eo_cxx {
namespace evas { namespace canvas3d { 
inline ::efl::eolian::return_traits< ::evas::canvas3d::Node>::type Scene::root_node_get() const
{
    ::Evas_Canvas3D_Node* __return_value =  ::evas_canvas3d_scene_root_node_get(_eo_ptr());
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits< ::evas::canvas3d::Node>::type>(__return_value);
}
inline ::efl::eolian::return_traits<void>::type Scene::root_node_set( ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type node) const
{
    ::evas_canvas3d_scene_root_node_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c< ::Evas_Canvas3D_Node*,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type>(node));
}
inline ::efl::eolian::return_traits< ::evas::canvas3d::Node>::type Scene::camera_node_get() const
{
    ::Evas_Canvas3D_Node* __return_value =  ::evas_canvas3d_scene_camera_node_get(_eo_ptr());
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits< ::evas::canvas3d::Node>::type>(__return_value);
}
inline ::efl::eolian::return_traits<void>::type Scene::camera_node_set( ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type node) const
{
    ::evas_canvas3d_scene_camera_node_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c< ::Evas_Canvas3D_Node*,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type>(node));
}
inline ::efl::eolian::return_traits<void>::type Scene::shadows_depth_get( ::efl::eolian::out_traits<Evas_Real>::type depth_offset,  ::efl::eolian::out_traits<Evas_Real>::type depth_constant) const
{
   Evas_Real __out_param_depth_offset = {};
   Evas_Real __out_param_depth_constant = {};
    ::evas_canvas3d_scene_shadows_depth_get(_eo_ptr()
      , & __out_param_depth_offset
      , & __out_param_depth_constant);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(depth_offset, __out_param_depth_offset);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(depth_constant, __out_param_depth_constant);
}
inline ::efl::eolian::return_traits<void>::type Scene::shadows_depth_set( ::efl::eolian::in_traits<Evas_Real>::type depth_offset,  ::efl::eolian::in_traits<Evas_Real>::type depth_constant) const
{
    ::evas_canvas3d_scene_shadows_depth_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(depth_offset)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(depth_constant));
}
inline ::efl::eolian::return_traits<void>::type Scene::size_set( ::efl::eolian::in_traits<int>::type w,  ::efl::eolian::in_traits<int>::type h) const
{
    ::evas_canvas3d_scene_size_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<int,  ::efl::eolian::in_traits<int>::type>(w)
      ,  ::efl::eolian::convert_to_c<int,  ::efl::eolian::in_traits<int>::type>(h));
}
inline ::efl::eolian::return_traits<void>::type Scene::size_get( ::efl::eolian::out_traits<int>::type w,  ::efl::eolian::out_traits<int>::type h) const
{
   int __out_param_w = {};
   int __out_param_h = {};
    ::evas_canvas3d_scene_size_get(_eo_ptr()
      , & __out_param_w
      , & __out_param_h);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<int>::type, int>(w, __out_param_w);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<int>::type, int>(h, __out_param_h);
}
inline ::efl::eolian::return_traits<void>::type Scene::background_color_set( ::efl::eolian::in_traits<Evas_Real>::type r,  ::efl::eolian::in_traits<Evas_Real>::type g,  ::efl::eolian::in_traits<Evas_Real>::type b,  ::efl::eolian::in_traits<Evas_Real>::type a) const
{
    ::evas_canvas3d_scene_background_color_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(r)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(g)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(b)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(a));
}
inline ::efl::eolian::return_traits<void>::type Scene::background_color_get( ::efl::eolian::out_traits<Evas_Real>::type r,  ::efl::eolian::out_traits<Evas_Real>::type g,  ::efl::eolian::out_traits<Evas_Real>::type b,  ::efl::eolian::out_traits<Evas_Real>::type a) const
{
   Evas_Real __out_param_r = {};
   Evas_Real __out_param_g = {};
   Evas_Real __out_param_b = {};
   Evas_Real __out_param_a = {};
    ::evas_canvas3d_scene_background_color_get(_eo_ptr()
      , & __out_param_r
      , & __out_param_g
      , & __out_param_b
      , & __out_param_a);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(r, __out_param_r);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(g, __out_param_g);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(b, __out_param_b);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(a, __out_param_a);
}
inline ::efl::eolian::return_traits<bool>::type Scene::pick( ::efl::eolian::in_traits<Evas_Real>::type x,  ::efl::eolian::in_traits<Evas_Real>::type y,  ::efl::eolian::out_traits< ::evas::canvas3d::Node>::type node,  ::efl::eolian::out_traits< ::evas::canvas3d::Mesh>::type mesh,  ::efl::eolian::out_traits<Evas_Real>::type s,  ::efl::eolian::out_traits<Evas_Real>::type t) const
{
    ::Evas_Canvas3D_Node* __out_param_node = {};
    ::Evas_Canvas3D_Mesh* __out_param_mesh = {};
   Evas_Real __out_param_s = {};
   Evas_Real __out_param_t = {};
   Eina_Bool __return_value =  ::evas_canvas3d_scene_pick(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(x)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(y)
      , & __out_param_node
      , & __out_param_mesh
      , & __out_param_s
      , & __out_param_t);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits< ::evas::canvas3d::Node>::type,  ::Evas_Canvas3D_Node*>(node, __out_param_node);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits< ::evas::canvas3d::Mesh>::type,  ::Evas_Canvas3D_Mesh*>(mesh, __out_param_mesh);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(s, __out_param_s);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(t, __out_param_t);
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits< ::evas::canvas3d::Node>::type Scene::exist( ::efl::eolian::in_traits<Evas_Real>::type x,  ::efl::eolian::in_traits<Evas_Real>::type y,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type node) const
{
    ::Evas_Canvas3D_Node* __return_value =  ::evas_canvas3d_scene_exist(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(x)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(y)
      ,  ::efl::eolian::convert_to_c< ::Evas_Canvas3D_Node*,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type>(node));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits< ::evas::canvas3d::Node>::type>(__return_value);
}
inline ::efl::eolian::return_traits<  ::efl::eina::range_list< ::evas::canvas3d::Node>>::type Scene::pick_member_list_get( ::efl::eolian::in_traits<Evas_Real>::type x,  ::efl::eolian::in_traits<Evas_Real>::type y) const
{
   Eina_List * __return_value =  ::evas_canvas3d_scene_pick_member_list_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(x)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(y));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<  ::efl::eina::range_list< ::evas::canvas3d::Node>>::type>(__return_value);
}
inline ::efl::eolian::return_traits<void>::type Scene::shadows_enable_set( ::efl::eolian::in_traits<bool>::type shadows_enabled) const
{
    ::evas_canvas3d_scene_shadows_enable_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Eina_Bool,  ::efl::eolian::in_traits<bool>::type>(shadows_enabled));
}
inline ::efl::eolian::return_traits<bool>::type Scene::shadows_enable_get() const
{
   Eina_Bool __return_value =  ::evas_canvas3d_scene_shadows_enable_get(_eo_ptr());
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits<bool>::type Scene::color_pick_enable_get() const
{
   Eina_Bool __return_value =  ::evas_canvas3d_scene_color_pick_enable_get(_eo_ptr());
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits<bool>::type Scene::color_pick_enable_set( ::efl::eolian::in_traits<bool>::type color_pick) const
{
   Eina_Bool __return_value =  ::evas_canvas3d_scene_color_pick_enable_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Eina_Bool,  ::efl::eolian::in_traits<bool>::type>(color_pick));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline evas::canvas3d::Scene::operator ::evas::canvas3d::Scene() const { return *static_cast< ::evas::canvas3d::Scene const*>(static_cast<void const*>(this)); }
inline evas::canvas3d::Scene::operator ::evas::canvas3d::Scene&() { return *static_cast< ::evas::canvas3d::Scene*>(static_cast<void*>(this)); }
inline evas::canvas3d::Scene::operator ::evas::canvas3d::Scene const&() const { return *static_cast< ::evas::canvas3d::Scene const*>(static_cast<void const*>(this)); }
} } }
#endif
