/*
 * 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";
option java_multiple_files = true;

package android.view;

import "frameworks/base/core/proto/android/app/window_configuration.proto";
import "frameworks/base/core/proto/android/graphics/point.proto";
import "frameworks/base/core/proto/android/graphics/rect.proto";
import "frameworks/base/core/proto/android/view/surfacecontrol.proto";
import "frameworks/base/core/proto/android/privacy.proto";

/** Proto representation for android.view.RemoteAnimationTarget.java class. */
message RemoteAnimationTargetProto {
    option (android.msg_privacy).dest = DEST_AUTOMATIC;

    optional int32 task_id = 1;
    optional int32 mode = 2;
    optional .android.view.SurfaceControlProto leash = 3;
    optional bool is_translucent = 4;
    optional .android.graphics.RectProto clip_rect = 5;
    optional .android.graphics.RectProto content_insets = 6;
    optional int32 prefix_order_index = 7;
    // The source position of the app, in screen spaces coordinates. If the
    // position of the leash is modified from the controlling app, any animation
    // transform needs to be offset by this amount.
    optional .android.graphics.PointProto position = 8;
    optional .android.graphics.RectProto source_container_bounds = 9;
    optional .android.app.WindowConfigurationProto window_configuration = 10;
    optional .android.view.SurfaceControlProto start_leash = 11;
    optional .android.graphics.RectProto start_bounds = 12;
    optional .android.graphics.RectProto local_bounds = 13;
    optional .android.graphics.RectProto screen_space_bounds = 14;
}
