WRAP_CLASS("itk::OrientImageFilter")

  FOREACH(d "3")
    FOREACH(t ${WRAP_ITK_SCALAR})
      WRAP_TEMPLATE("${ITKM_I${t}${d}}${ITKM_I${t}${d}}" "${ITKT_I${t}${d}},${ITKT_I${t}${d}}")
    ENDFOREACH(t)
  ENDFOREACH(d)

  BEGIN_MANAGED_PROPERTY("UseImageDirection" GETSET)
    SET(MANAGED_METHOD_SUMMARY     "Controls how the GivenCoordinateOrientation is determined. If 'on', the direction cosines determine the coordinate orientation. If 'off', the user must use the GivenCoordinateOrientation property to establish the orientation. For compatbility with the original API, the default if 'off'.")
    SET(MANAGED_PROPERTY_TYPE      "bool")
    SET(MANAGED_PROPERTY_GET_BODY  "return m_PointerToNative->GetUseImageDirection();")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetUseImageDirection( value );")
  END_MANAGED_PROPERTY()

  BEGIN_MANAGED_PROPERTY("GivenCoordinateOrientation" GETSET)
    SET(MANAGED_METHOD_SUMMARY     "Get/set the given orientation code, controlling the coordinate transform.")
    SET(MANAGED_PROPERTY_TYPE      "itkSpatialOrientationEnum")
    SET(MANAGED_PROPERTY_GET_BODY  "return ManagedTypes::ToManagedSpatialOrientation( m_PointerToNative->GetGivenCoordinateOrientation() );")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetGivenCoordinateOrientation( ManagedTypes::ToNativeSpatialOrientation(value) );")
  END_MANAGED_PROPERTY()

  BEGIN_MANAGED_PROPERTY("DesiredCoordinateOrientation" GETSET)
    SET(MANAGED_METHOD_SUMMARY     "Get/set the desired orientation code, controlling the coordinate transform.")
    SET(MANAGED_PROPERTY_TYPE      "itkSpatialOrientationEnum")
    SET(MANAGED_PROPERTY_GET_BODY  "return ManagedTypes::ToManagedSpatialOrientation( m_PointerToNative->GetDesiredCoordinateOrientation() );")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetDesiredCoordinateOrientation( ManagedTypes::ToNativeSpatialOrientation(value) );")
  END_MANAGED_PROPERTY()

  BEGIN_MANAGED_METHOD("SetDesiredCoordinateOrientationToAxial")
    SET(MANAGED_METHOD_SUMMARY         "Convenience method to set desired slice orientation to RAI.")
    SET(MANAGED_METHOD_RETURN_TYPE     "void")
    SET(MANAGED_METHOD_PARAMS          "void")
    SET(MANAGED_METHOD_TYPE_BODY       "m_PointerToNative->SetDesiredCoordinateOrientationToAxial( );")
    SET(MANAGED_METHOD_WRAPPER_BODY    "iInstance->SetDesiredCoordinateOrientationToAxial( );")
  END_MANAGED_METHOD()

  BEGIN_MANAGED_METHOD("SetDesiredCoordinateOrientationToCoronal")
    SET(MANAGED_METHOD_SUMMARY         "Convenience method to set desired slice orientation to RSA.")
    SET(MANAGED_METHOD_RETURN_TYPE     "void")
    SET(MANAGED_METHOD_PARAMS          "void")
    SET(MANAGED_METHOD_TYPE_BODY       "m_PointerToNative->SetDesiredCoordinateOrientationToCoronal( );")
    SET(MANAGED_METHOD_WRAPPER_BODY    "iInstance->SetDesiredCoordinateOrientationToCoronal( );")
  END_MANAGED_METHOD()

  BEGIN_MANAGED_METHOD("SetDesiredCoordinateOrientationToSagittal")
    SET(MANAGED_METHOD_SUMMARY         "Convenience method to set desired slice orientation to ASL.")
    SET(MANAGED_METHOD_RETURN_TYPE     "void")
    SET(MANAGED_METHOD_PARAMS          "void")
    SET(MANAGED_METHOD_TYPE_BODY       "m_PointerToNative->SetDesiredCoordinateOrientationToSagittal( );")
    SET(MANAGED_METHOD_WRAPPER_BODY    "iInstance->SetDesiredCoordinateOrientationToSagittal( );")
  END_MANAGED_METHOD()

END_WRAP_CLASS()
