syntax = "proto3";

package rv.data;

option cc_enable_arenas = true;
option csharp_namespace = "Pro.SerializationInterop.RVProtoData";
option swift_prefix = "RVData_";

import "color.proto";
import "effects.proto";
import "hotKey.proto";
import "uuid.proto";

message Layer {
  message Preset {
    .rv.data.UUID uuid = 1;
    string name = 2;
    .rv.data.Layer layer = 3;
  }

  message Blending {
    message Standard {
      .rv.data.Layer.BlendMode mode = 1;
      double opacity = 2;
    }

    message Matte {
      reserved 3;
      message Alpha {
        bool inverted = 1;
      }

      message Luma {
        bool inverted = 1;
      }

      message White {
      }

      oneof MatteType {
        .rv.data.Layer.Blending.Matte.Alpha alpha = 1;
        .rv.data.Layer.Blending.Matte.Luma luma = 2;
        .rv.data.Layer.Blending.Matte.White white = 4;
      }
    }

    oneof BlendingType {
      .rv.data.Layer.Blending.Standard standard = 1;
      .rv.data.Layer.Blending.Matte matte = 2;
    }
  }

  enum BlendMode {
    BLEND_MODE_NORMAL = 0;
    BLEND_MODE_DISSOLVE = 1;
    BLEND_MODE_DARKEN = 2;
    BLEND_MODE_MULTIPLY = 3;
    BLEND_MODE_COLOR_BURN = 4;
    BLEND_MODE_LINEAR_BURN = 5;
    BLEND_MODE_DARKER_COLOR = 6;
    BLEND_MODE_LIGHTEN = 7;
    BLEND_MODE_SCREEN = 8;
    BLEND_MODE_COLOR_DODGE = 9;
    BLEND_MODE_LINEAR_DODGE = 10;
    BLEND_MODE_LIGHTER_COLOR = 11;
    BLEND_MODE_OVERLAY = 12;
    BLEND_MODE_SOFT_LIGHT = 13;
    BLEND_MODE_HARD_LIGHT = 14;
    BLEND_MODE_VIVID_LIGHT = 15;
    BLEND_MODE_LINEAR_LIGHT = 16;
    BLEND_MODE_PIN_LIGHT = 17;
    BLEND_MODE_HARD_MIX = 18;
    BLEND_MODE_DIFFERENCE = 19;
    BLEND_MODE_EXCLUSION = 20;
    BLEND_MODE_SUBTRACT = 21;
    BLEND_MODE_DIVIDE = 22;
    BLEND_MODE_HUE = 23;
    BLEND_MODE_SATURATION = 24;
    BLEND_MODE_COLOR = 25;
    BLEND_MODE_LUMINOSITY = 26;
  }

  .rv.data.UUID uuid = 1;
  string name = 2;
  .rv.data.Color color = 3;
  bool muted = 4;
  bool hidden = 5;
  .rv.data.Layer.BlendMode blend_mode = 6;
  double opacity = 7;
  .rv.data.UUID selected_target_set_uuid = 8;
  .rv.data.UUID effects_preset_uuid = 9;
  double effects_build_duration = 10;
  .rv.data.UUID layer_preset_uuid = 11;
  .rv.data.HotKey hot_key = 12;
  .rv.data.Transition transition = 13;
  repeated .rv.data.Effect effects = 14;
  .rv.data.Layer.Blending blend = 15;
}

