// generated from rosidl_adapter/resource/msg.idl.em
// with input from example_interfaces/msg/MultiArrayLayout.msg
// generated code does not contain a copyright notice

#include "example_interfaces/msg/MultiArrayDimension.idl"

module example_interfaces {
  module msg {
    @verbatim (language="comment", text=
      " This is an example of using complex datatypes." "\n"
      " It is not recommended to use directly." "\n"
      " To use a similar datastruct please define a custom message with appropriate semantic meaning.")
    struct MultiArrayLayout {
      @verbatim (language="comment", text=
        " The multiarray declares a generic multi-dimensional array of a" "\n"
        " particular data type.  Dimensions are ordered from outer most" "\n"
        " to inner most." "\n"
        "" "\n"
        " Accessors should ALWAYS be written in terms of dimension stride" "\n"
        " and specified outer-most dimension first." "\n"
        "" "\n"
        " multiarray(i,j,k) = data[data_offset + dim_stride[1]*i + dim_stride[2]*j + k]" "\n"
        "" "\n"
        " A standard, 3-channel 640x480 image with interleaved color channels" "\n"
        " would be specified as:" "\n"
        "" "\n"
        " dim[0].label  = \"height\"" "\n"
        " dim[0].size   = 480" "\n"
        " dim[0].stride = 3*640*480 = 921600  (note dim[0] stride is just size of image)" "\n"
        " dim[1].label  = \"width\"" "\n"
        " dim[1].size   = 640" "\n"
        " dim[1].stride = 3*640 = 1920" "\n"
        " dim[2].label  = \"channel\"" "\n"
        " dim[2].size   = 3" "\n"
        " dim[2].stride = 3" "\n"
        "" "\n"
        " multiarray(i,j,k) refers to the ith row, jth column, and kth channel." "\n"
        " Array of dimension properties")
      sequence<example_interfaces::msg::MultiArrayDimension> dim;

      @verbatim (language="comment", text=
        " padding bytes at front of data")
      uint32 data_offset;
    };
  };
};
