#ifndef EVAS_CANVAS3D_CAMERA_IMPL_HH
#define EVAS_CANVAS3D_CAMERA_IMPL_HH

#include "evas_canvas3d_camera.eo.hh"

namespace evas { namespace canvas3d { 
#ifdef EFL_BETA_API_SUPPORT
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));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
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);
}
#endif
#ifdef EFL_BETA_API_SUPPORT
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));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
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));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
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));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
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);
}
#endif
} } 
namespace eo_cxx {
namespace evas { namespace canvas3d { 
#ifdef EFL_BETA_API_SUPPORT
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));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
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);
}
#endif
#ifdef EFL_BETA_API_SUPPORT
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));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
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));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
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));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
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);
}
#endif
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
