/*
 * 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 "frameworks/base/core/proto/android/graphics/point.proto";
import "frameworks/base/core/proto/android/view/remote_animation_target.proto";
import "frameworks/base/core/proto/android/privacy.proto";

package com.android.server.wm;
option java_multiple_files = true;

message AnimationAdapterProto {
    option (.android.msg_privacy).dest = DEST_AUTOMATIC;

    optional LocalAnimationAdapterProto local = 1;
    optional RemoteAnimationAdapterWrapperProto remote = 2;
}

/* represents RemoteAnimationAdapterWrapper */
message RemoteAnimationAdapterWrapperProto {
    option (.android.msg_privacy).dest = DEST_AUTOMATIC;

    optional .android.view.RemoteAnimationTargetProto target = 1;
}

/* represents LocalAnimationAdapter */
message LocalAnimationAdapterProto {
    option (.android.msg_privacy).dest = DEST_AUTOMATIC;

    optional AnimationSpecProto animation_spec = 1;
}

message AnimationSpecProto {
    option (.android.msg_privacy).dest = DEST_AUTOMATIC;

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

/* represents WindowAnimationSpec */
message WindowAnimationSpecProto {
    option (.android.msg_privacy).dest = DEST_AUTOMATIC;

    optional string animation = 1;
}

/* represents MoveAnimationSpec*/
message MoveAnimationSpecProto {
    option (.android.msg_privacy).dest = DEST_AUTOMATIC;

    optional .android.graphics.PointProto from = 1;
    optional .android.graphics.PointProto to = 2;
    optional int64 duration_ms = 3;
}

/* represents AlphaAnimationSpec */
message AlphaAnimationSpecProto {
    option (.android.msg_privacy).dest = DEST_AUTOMATIC;

    optional float from = 1;
    optional float to = 2;
    optional int64 duration_ms = 3;
}

/* represents RotationAnimationSpec */
message RotationAnimationSpecProto {
    option (.android.msg_privacy).dest = DEST_AUTOMATIC;

    optional float start_luma = 1;
    optional float end_luma = 2;
    optional int64 duration_ms = 3;
}
