// ###############################################################
// Copyright(c) Carl Zeiss AG, Germany. All Rights Reserved.
//
// Permission is granted to use and distribute this code,
// as long as this copyright notice remains part of the code.
// ###############################################################

syntax = "proto3";
package zen_api.acquisition.v1beta;
import "zen_api/acquisition/v1beta/frame_pixel_data.proto";
import "zen_api/acquisition/v1beta/frame_position.proto";
import "zen_api/acquisition/v1beta/frame_stage_position.proto";
import "zen_api/acquisition/v1beta/scaling.proto";
import "zen_api/common/v1/int_size.proto";

// A simple container for the frame data. This can contain either a full frame or only a part
// of it (e.g., in case of partial acquisition when working with EM and LSM).
message FrameData {
   // The ID of the experiment.
   string experiment_id = 1;
   // The frame sequence number.
   // One frame can represent either a single image taken by the camera or one full scan in
   // case of partial acquisition. One frame can also contain multiple channels if they are
   // acquired in the same image or scan.
   int32 frame_number = 2;
   // The position of the full frame.
   FramePosition frame_position = 3;
   // The size of the full frame (in pixels).
   .zen_api.common.v1.IntSize frame_size = 4;
   // The stage position of the acquired full frame.
   FrameStagePosition frame_stage_position = 5;
   // The scaling of the frame.
   Scaling scaling = 6;
   // The pixel data of the frame.
   // This can contain either the pixels of a full frame or only a part of it (e.g., a line or
   // a rectangle in case of partial acquisition when working with EM and LSM).
   FramePixelData pixel_data = 7;
}
