// Generated by gencpp from file robot_visualization_msgs/ImageMarker.msg
// DO NOT EDIT!


#ifndef ROBOT_VISUALIZATION_MSGS_MESSAGE_IMAGEMARKER_H
#define ROBOT_VISUALIZATION_MSGS_MESSAGE_IMAGEMARKER_H


#include <string>
#include <vector>
#include <memory>

#include <robot_std_msgs/Header.h>
#include <robot_geometry_msgs/Point.h>
#include <robot_std_msgs/ColorRGBA.h>

namespace robot_visualization_msgs
{
template <class ContainerAllocator>
struct ImageMarker_
{
  typedef ImageMarker_<ContainerAllocator> Type;

  ImageMarker_()
    : header()
    , ns()
    , id(0)
    , type(0)
    , action(0)
    , position()
    , scale(0.0)
    , outline_color()
    , filled(0)
    , fill_color()
    , lifetime()
    , points()
    , outline_colors()  {
    }
  ImageMarker_(const ContainerAllocator& _alloc)
    : header(_alloc)
    , ns(_alloc)
    , id(0)
    , type(0)
    , action(0)
    , position(_alloc)
    , scale(0.0)
    , outline_color(_alloc)
    , filled(0)
    , fill_color(_alloc)
    , lifetime()
    , points(_alloc)
    , outline_colors(_alloc)  {
  (void)_alloc;
    }



   typedef  ::robot_std_msgs::Header_<ContainerAllocator>  _header_type;
  _header_type header;

   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _ns_type;
  _ns_type ns;

   typedef int32_t _id_type;
  _id_type id;

   typedef int32_t _type_type;
  _type_type type;

   typedef int32_t _action_type;
  _action_type action;

   typedef  ::robot_geometry_msgs::Point_<ContainerAllocator>  _position_type;
  _position_type position;

   typedef float _scale_type;
  _scale_type scale;

   typedef  ::robot_std_msgs::ColorRGBA_<ContainerAllocator>  _outline_color_type;
  _outline_color_type outline_color;

   typedef uint8_t _filled_type;
  _filled_type filled;

   typedef  ::robot_std_msgs::ColorRGBA_<ContainerAllocator>  _fill_color_type;
  _fill_color_type fill_color;

   typedef robot::Duration _lifetime_type;
  _lifetime_type lifetime;

   typedef std::vector< ::robot_geometry_msgs::Point_<ContainerAllocator> , typename std::allocator_traits<ContainerAllocator>::template rebind_alloc< ::robot_geometry_msgs::Point_<ContainerAllocator> >> _points_type;
  _points_type points;

   typedef std::vector< ::robot_std_msgs::ColorRGBA_<ContainerAllocator> , typename std::allocator_traits<ContainerAllocator>::template rebind_alloc< ::robot_std_msgs::ColorRGBA_<ContainerAllocator> >> _outline_colors_type;
  _outline_colors_type outline_colors;



// reducing the odds to have name collisions with Windows.h 
#if defined(_WIN32) && defined(CIRCLE)
  #undef CIRCLE
#endif
#if defined(_WIN32) && defined(LINE_STRIP)
  #undef LINE_STRIP
#endif
#if defined(_WIN32) && defined(LINE_LIST)
  #undef LINE_LIST
#endif
#if defined(_WIN32) && defined(POLYGON)
  #undef POLYGON
#endif
#if defined(_WIN32) && defined(POINTS)
  #undef POINTS
#endif
#if defined(_WIN32) && defined(ADD)
  #undef ADD
#endif
#if defined(_WIN32) && defined(REMOVE)
  #undef REMOVE
#endif

  enum {
    CIRCLE = 0u,
    LINE_STRIP = 1u,
    LINE_LIST = 2u,
    POLYGON = 3u,
    POINTS = 4u,
    ADD = 0u,
    REMOVE = 1u,
  };


  typedef boost::shared_ptr< ::robot_visualization_msgs::ImageMarker_<ContainerAllocator> > Ptr;
  typedef boost::shared_ptr< ::robot_visualization_msgs::ImageMarker_<ContainerAllocator> const> ConstPtr;

}; // struct ImageMarker_

typedef ::robot_visualization_msgs::ImageMarker_<std::allocator<void> > ImageMarker;

typedef boost::shared_ptr< ::robot_visualization_msgs::ImageMarker > ImageMarkerPtr;
typedef boost::shared_ptr< ::robot_visualization_msgs::ImageMarker const> ImageMarkerConstPtr;

// constants requiring out of line definition

template<typename ContainerAllocator1, typename ContainerAllocator2>
bool operator==(const ::robot_visualization_msgs::ImageMarker_<ContainerAllocator1> & lhs, const ::robot_visualization_msgs::ImageMarker_<ContainerAllocator2> & rhs)
{
  return lhs.header == rhs.header &&
    lhs.ns == rhs.ns &&
    lhs.id == rhs.id &&
    lhs.type == rhs.type &&
    lhs.action == rhs.action &&
    lhs.position == rhs.position &&
    lhs.scale == rhs.scale &&
    lhs.outline_color == rhs.outline_color &&
    lhs.filled == rhs.filled &&
    lhs.fill_color == rhs.fill_color &&
    lhs.lifetime == rhs.lifetime &&
    lhs.points == rhs.points &&
    lhs.outline_colors == rhs.outline_colors;
}

template<typename ContainerAllocator1, typename ContainerAllocator2>
bool operator!=(const ::robot_visualization_msgs::ImageMarker_<ContainerAllocator1> & lhs, const ::robot_visualization_msgs::ImageMarker_<ContainerAllocator2> & rhs)
{
  return !(lhs == rhs);
}


} // namespace robot_visualization_msgs

#endif // ROBOT_VISUALIZATION_MSGS_MESSAGE_IMAGEMARKER_H
