#ifndef EVAS_CANVAS3D_CAMERA_IMPL_HH
#define EVAS_CANVAS3D_CAMERA_IMPL_HH

#include "evas_canvas3d_camera.eo.hh"

namespace evas { namespace canvas3d { 
inline ::efl::eolian::return_traits<void>::type Camera::projection_matrix_set( ::efl::eolian::in_traits<Evas_Real const&>::type matrix) const
{
    ::evas_canvas3d_camera_projection_matrix_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<const Evas_Real *,  ::efl::eolian::in_traits<Evas_Real const&>::type>(matrix));
}
inline ::efl::eolian::return_traits<void>::type Camera::projection_matrix_get( ::efl::eolian::out_traits<Evas_Real>::type matrix) const
{
   Evas_Real __out_param_matrix = {};
    ::evas_canvas3d_camera_projection_matrix_get(_eo_ptr()
      , & __out_param_matrix);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(matrix, __out_param_matrix);
}
inline ::efl::eolian::return_traits<void>::type Camera::projection_perspective_set( ::efl::eolian::in_traits<Evas_Real>::type fovy,  ::efl::eolian::in_traits<Evas_Real>::type aspect,  ::efl::eolian::in_traits<Evas_Real>::type dnear,  ::efl::eolian::in_traits<Evas_Real>::type dfar) const
{
    ::evas_canvas3d_camera_projection_perspective_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(fovy)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(aspect)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(dnear)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(dfar));
}
inline ::efl::eolian::return_traits<void>::type Camera::projection_frustum_set( ::efl::eolian::in_traits<Evas_Real>::type left,  ::efl::eolian::in_traits<Evas_Real>::type right,  ::efl::eolian::in_traits<Evas_Real>::type bottom,  ::efl::eolian::in_traits<Evas_Real>::type top,  ::efl::eolian::in_traits<Evas_Real>::type dnear,  ::efl::eolian::in_traits<Evas_Real>::type dfar) const
{
    ::evas_canvas3d_camera_projection_frustum_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(left)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(right)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(bottom)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(top)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(dnear)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(dfar));
}
inline ::efl::eolian::return_traits<void>::type Camera::projection_ortho_set( ::efl::eolian::in_traits<Evas_Real>::type left,  ::efl::eolian::in_traits<Evas_Real>::type right,  ::efl::eolian::in_traits<Evas_Real>::type bottom,  ::efl::eolian::in_traits<Evas_Real>::type top,  ::efl::eolian::in_traits<Evas_Real>::type dnear,  ::efl::eolian::in_traits<Evas_Real>::type dfar) const
{
    ::evas_canvas3d_camera_projection_ortho_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(left)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(right)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(bottom)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(top)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(dnear)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(dfar));
}
inline ::efl::eolian::return_traits<bool>::type Camera::node_visible_get( ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type camera_node,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type node,  ::efl::eolian::in_traits<Evas_Canvas3D_Frustum_Mode>::type key) const
{
   Eina_Bool __return_value =  ::evas_canvas3d_camera_node_visible_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c< ::Evas_Canvas3D_Node*,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type>(camera_node)
      ,  ::efl::eolian::convert_to_c< ::Evas_Canvas3D_Node*,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type>(node)
      ,  ::efl::eolian::convert_to_c<Evas_Canvas3D_Frustum_Mode,  ::efl::eolian::in_traits<Evas_Canvas3D_Frustum_Mode>::type>(key));
   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<void>::type Camera::projection_matrix_set( ::efl::eolian::in_traits<Evas_Real const&>::type matrix) const
{
    ::evas_canvas3d_camera_projection_matrix_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<const Evas_Real *,  ::efl::eolian::in_traits<Evas_Real const&>::type>(matrix));
}
inline ::efl::eolian::return_traits<void>::type Camera::projection_matrix_get( ::efl::eolian::out_traits<Evas_Real>::type matrix) const
{
   Evas_Real __out_param_matrix = {};
    ::evas_canvas3d_camera_projection_matrix_get(_eo_ptr()
      , & __out_param_matrix);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(matrix, __out_param_matrix);
}
inline ::efl::eolian::return_traits<void>::type Camera::projection_perspective_set( ::efl::eolian::in_traits<Evas_Real>::type fovy,  ::efl::eolian::in_traits<Evas_Real>::type aspect,  ::efl::eolian::in_traits<Evas_Real>::type dnear,  ::efl::eolian::in_traits<Evas_Real>::type dfar) const
{
    ::evas_canvas3d_camera_projection_perspective_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(fovy)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(aspect)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(dnear)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(dfar));
}
inline ::efl::eolian::return_traits<void>::type Camera::projection_frustum_set( ::efl::eolian::in_traits<Evas_Real>::type left,  ::efl::eolian::in_traits<Evas_Real>::type right,  ::efl::eolian::in_traits<Evas_Real>::type bottom,  ::efl::eolian::in_traits<Evas_Real>::type top,  ::efl::eolian::in_traits<Evas_Real>::type dnear,  ::efl::eolian::in_traits<Evas_Real>::type dfar) const
{
    ::evas_canvas3d_camera_projection_frustum_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(left)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(right)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(bottom)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(top)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(dnear)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(dfar));
}
inline ::efl::eolian::return_traits<void>::type Camera::projection_ortho_set( ::efl::eolian::in_traits<Evas_Real>::type left,  ::efl::eolian::in_traits<Evas_Real>::type right,  ::efl::eolian::in_traits<Evas_Real>::type bottom,  ::efl::eolian::in_traits<Evas_Real>::type top,  ::efl::eolian::in_traits<Evas_Real>::type dnear,  ::efl::eolian::in_traits<Evas_Real>::type dfar) const
{
    ::evas_canvas3d_camera_projection_ortho_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(left)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(right)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(bottom)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(top)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(dnear)
      ,  ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(dfar));
}
inline ::efl::eolian::return_traits<bool>::type Camera::node_visible_get( ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type camera_node,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type node,  ::efl::eolian::in_traits<Evas_Canvas3D_Frustum_Mode>::type key) const
{
   Eina_Bool __return_value =  ::evas_canvas3d_camera_node_visible_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c< ::Evas_Canvas3D_Node*,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type>(camera_node)
      ,  ::efl::eolian::convert_to_c< ::Evas_Canvas3D_Node*,  ::efl::eolian::in_traits< ::evas::canvas3d::Node>::type>(node)
      ,  ::efl::eolian::convert_to_c<Evas_Canvas3D_Frustum_Mode,  ::efl::eolian::in_traits<Evas_Canvas3D_Frustum_Mode>::type>(key));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline evas::canvas3d::Camera::operator ::evas::canvas3d::Camera() const { return *static_cast< ::evas::canvas3d::Camera const*>(static_cast<void const*>(this)); }
inline evas::canvas3d::Camera::operator ::evas::canvas3d::Camera&() { return *static_cast< ::evas::canvas3d::Camera*>(static_cast<void*>(this)); }
inline evas::canvas3d::Camera::operator ::evas::canvas3d::Camera const&() const { return *static_cast< ::evas::canvas3d::Camera const*>(static_cast<void const*>(this)); }
} } }
#endif
