syntax = "proto3";

package huddly;

message CropIndexStatusRequest {}

message CropIndexStatusResponse {
  int32 crop_index = 1;
}

message Rect {
  float x_center = 1;     // (0.125 - 0.875) On max Zoom
  float y_center = 2;     // (0.125 - 0.875) On max Zoom
  float zoom_factor = 3;  // (1 - 4)
}

message IndexedTransitions {
  // List of Crops.
  message Transition {
    message Crop {
      Rect rect = 1;
      int32 crop_index = 2;
    }
    repeated Crop crops = 1;
  }

  repeated int32 starting_index = 1;  // (or timestamp)
  // Transitions are associated with the starting indices above.
  repeated Transition transition = 2;
}

message IndexedTransitionsResponse {
  // Nonnegative crop_index of transition selected by camera to execute, or -1
  // in the case of an error, where the camera should stop moving and return
  // the current crop rect.
  int32 chosen_starting_index = 1;
  // In the case that there is some error, the camera should return its current
  // crop.
  Rect current_position = 2;
}

message CurrentPtzCrop {
  Rect current_crop = 1;
}
