syntax = "proto3";
package ironpdfengineproto;
import "basic.proto";

option java_package = "com.ironsoftware.ironpdf.internal.proto";
option java_multiple_files = true;

message PdfiumComboBoxFieldP {
  repeated string options = 1;
  int32 selected_index = 2;
}

message PdfiumRadioFieldP {
  repeated string options = 1;
  int32 selected_index = 2;
}


message PdfiumCheckBoxFieldP {
  bool BooleanValue = 1;
}

message PdfiumSignatureFieldP {}

message PdfiumTextFieldP {}

message PdfiumImageFieldP {}

message PdfiumUnknownFieldP {}

message PdfiumFormFieldP {
  int32  annotation_index = 1;
  string name = 2;
  int32 page_index = 3;
  bool read_only = 4; //in c# we need to call GetFormFieldIsReadOnly but in protobuf server must call this value when form field object was created
  string type = 5;
  string value = 6;
  double width = 7;
  double height = 8;
  double x = 9;
  double y = 10;
  oneof sub_type {
    PdfiumComboBoxFieldP combo_box_field = 11;
    PdfiumCheckBoxFieldP check_box_field = 12;
    PdfiumTextFieldP text_field = 13;
    PdfiumUnknownFieldP unknown_field = 14;
    PdfiumRadioFieldP radio_field = 15;
    PdfiumImageFieldP image_field = 16;
    PdfiumSignatureFieldP signature_field = 17;
  }
}

message PdfiumPdfFormP {
  repeated PdfiumFormFieldP form_fields = 1;
}

message PdfiumGetFormRequestP {
  PdfDocumentP document = 1;
}

message PdfiumGetFormResultP {
  oneof result_or_exception {
    PdfiumPdfFormP result = 1;
    RemoteExceptionP exception = 2;
  }
}

message PdfiumRenameFormFieldResultP
{
  oneof result_or_exception {
    string result = 1;
    RemoteExceptionP exception = 2;
  }
}

message PdfiumRenameFieldRequestP {
  PdfDocumentP document = 1;
  string current_field_name = 2;
  string new_field_name = 3;
}

message PdfiumSetFormFieldValueRequestP {
  PdfDocumentP document = 1;
  int32 annotation_index = 2;
  int32 page_index = 3;
  string form_field_value = 4;
}

message PdfiumGetFormFieldValueResultP {
  oneof result_or_exception {
    string result = 1;
    RemoteExceptionP exception = 2;
  }
}

message PdfiumGetFormFieldValueRequestP {
  PdfDocumentP document = 1;
  int32 annotation_index = 2;
  int32 page_index = 3;
}

message PdfiumGetFormFieldIsReadOnlyResultP {
  oneof result_or_exception {
    bool result = 1;
    RemoteExceptionP exception = 2;
  }
}

message PdfiumGetFormFieldIsReadOnlyRequestP {
  PdfDocumentP document = 1;
  int32 annotation_index = 2;
  int32 page_index = 3;
}

message PdfiumGetComboboxSelectedIndexResultP {
  oneof result_or_exception {
    int32 result = 1;
    RemoteExceptionP exception = 2;
  }
}

message PdfiumComboboxOptionsP
{
  repeated string value = 1;
}

message PdfiumGetComboboxOptionsResultP {
  oneof result_or_exception {
    PdfiumComboboxOptionsP result = 1;
    RemoteExceptionP exception = 2;
  }
}
message PdfiumGetComboboxSelectedIndexRequestP {
  PdfDocumentP document = 1;
  int32 annotation_index = 2;
  int32 page_index = 3;
}

message PdfiumGetComboboxOptionsRequestP {
  PdfDocumentP document = 1;
  int32 annotation_index = 2;
  int32 page_index = 3;
}

message PdfiumSetFormFieldFontRequestP {
  PdfDocumentP document = 1;
  string field_name = 2;
  FontTypeP font_type = 3;
  optional int32 font_size = 4;
}

message PdfiumFlattenFormRequestP {
  PdfDocumentP document = 1;
  repeated int32 page_indexes = 2;
}

message PdfiumSetFormFieldIsReadOnlyRequestP {
  PdfDocumentP document = 1;
  int32 annotation_index = 2;
  int32 page_index = 3;
  bool is_read_only = 4;
}

message PdfiumIFormFieldObjectP {
    PdfiumIDocumentObjectP document_object = 1;
    repeated PdfiumIFormFieldAnnotationP annotations = 2;
    repeated string choices = 3;
    string default_appearance = 4;
    PdfiumPdfFormFieldFlagsP form_flags = 5;
    string form_type = 6;
    string full_name = 7;
    int32 max_length = 8;
    string name = 9;
    string obj_type = 10;
    bool read_only = 11;
    string rich_text = 12;
    PdfiumPdfFormFieldTypeP type = 13;
    string value = 14;
}

message PdfiumIFormFieldAnnotationP {
    PdfiumIDocumentObjectP document_object = 1;
    PdfiumIFormFieldAnnotationObjectP annotation_object = 2;
    repeated string appearances = 3;
    string appearance_state = 4;
    PdfiumPdfAnnotationFlagsP annotation_flags = 5;
    string on_appearance = 6;
    string javascript = 7;
}


message PdfiumPdfFormFieldFlagsP {
    int32 enum_value = 1;
}

message PdfiumPdfFormFieldTypeP {
    int32 enum_value = 1;
}

message PdfiumPdfAnnotationFlagsP {
    int32 enum_value = 1;
}

message PdfiumIFormFieldAnnotationObjectP {
    int32 page_index = 1;
    double x = 2;
    double y = 3;
    double width = 4;
    double height = 5;
}

message PdfiumAddFormFieldRequestP {
    PdfDocumentP document = 1;
    PdfiumIFormFieldObjectP form_object = 2;
}

message PdfiumAddFormFieldAnnotationRequestP {
    PdfDocumentP document = 1;
    PdfiumIFormFieldObjectP form_object = 2;
    PdfiumIFormFieldAnnotationP annot = 3;
}

message PdfiumRemoveFormFieldRequestP {
    PdfDocumentP document = 1;
    PdfiumIFormFieldObjectP form_object = 2;
}

message PdfiumRemoveFormFieldAnnotationRequestP {
    PdfDocumentP document = 1;
    PdfiumIFormFieldObjectP form_object = 2;
    PdfiumIFormFieldAnnotationP annot = 3;
}

message PdfiumSetFormFieldValue2RequestP {
    PdfDocumentP document = 1;
    PdfiumIFormFieldObjectP form_object = 2;
    string value = 3;
}

message PdfiumUpdateFormFieldRequestP {
    PdfDocumentP document = 1;
    PdfiumIFormFieldObjectP form_object = 2;
}

message PdfiumUpdateFormFieldAnnotationRequestP {
    PdfDocumentP document = 1;
    PdfiumIFormFieldObjectP form_object = 2;
    PdfiumIFormFieldAnnotationP annot = 3;
}

message PdfiumGetFormFieldsResultP {
  oneof result_or_exception {
    PdfiumFormFieldCollectionP result = 1;
    RemoteExceptionP exception = 2;
  }
}

message PdfiumFormFieldCollectionP {
    repeated PdfiumIFormFieldP fields = 1;
}

message PdfiumIFormFieldP {
    PdfiumIDocumentObjectP document_object = 1;
    PdfiumIFormFieldObjectP form_object = 2;
    PdfiumIFormFieldAnnotationObjectP annotation_object = 3;
}

message PdfiumGetFormFieldsRequestP{
    PdfDocumentP document = 1;
}