/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto2";

import "protos/perfetto/trace/android/graphics/point.proto";
import "protos/perfetto/trace/android/view/remote_animation_target.proto";

package perfetto.protos;

message AnimationAdapterProto {
  optional LocalAnimationAdapterProto local = 1;
  optional RemoteAnimationAdapterWrapperProto remote = 2;
}

// represents RemoteAnimationAdapterWrapper
message RemoteAnimationAdapterWrapperProto {
  optional RemoteAnimationTargetProto target = 1;
}

// represents LocalAnimationAdapter
message LocalAnimationAdapterProto {
  optional AnimationSpecProto animation_spec = 1;
}

message AnimationSpecProto {
  optional WindowAnimationSpecProto window = 1;
  optional MoveAnimationSpecProto move = 2;
  optional AlphaAnimationSpecProto alpha = 3;
  optional RotationAnimationSpecProto rotate = 4;
}

// represents WindowAnimationSpec
message WindowAnimationSpecProto {
  optional string animation = 1;
}

// represents MoveAnimationSpec
message MoveAnimationSpecProto {
  optional PointProto from = 1;
  optional PointProto to = 2;
  optional int64 duration_ms = 3;
}

// represents AlphaAnimationSpec
message AlphaAnimationSpecProto {
  optional float from = 1;
  optional float to = 2;
  optional int64 duration_ms = 3;
}

// represents RotationAnimationSpec
message RotationAnimationSpecProto {
  optional float start_luma = 1;
  optional float end_luma = 2;
  optional int64 duration_ms = 3;
}
