blob: 4a9ef3121ec13a3aaf0d03b8bf9b97fc99dbd402 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
[DartPackage="mojo_services"]
module mojo;
import "geometry/public/interfaces/geometry.mojom";
enum AnimationTweenType {
LINEAR,
EASE_IN,
EASE_OUT,
EASE_IN_OUT,
};
enum AnimationProperty {
// Used for pausing.
NONE,
OPACITY,
TRANSFORM,
};
struct AnimationValue {
float float_value;
Transform transform;
};
// Identifies how a particular property should be animated between a start and
// target value.
struct AnimationElement {
AnimationProperty property;
// Duration is in microseconds.
int64 duration;
AnimationTweenType tween_type;
// If not specified the start value is taken from either the current value
// (for the first element) or the target_value of the previous element.
AnimationValue? start_value;
// target_value may be null when property is NONE.
AnimationValue? target_value;
};
// An AnimationSequence consists of a number of AnimationElements to animate.
// Each element is animated serially.
struct AnimationSequence {
// Number of times to run the sequence. Value of 0 means run until
// explicitly stopped.
uint32 cycle_count;
array<AnimationElement> elements;
};
// AnimationGroup identifies a view and a set of AnimationSequences to apply
// to the view. Each sequence is run in parallel.
struct AnimationGroup {
uint32 view_id;
array<AnimationSequence> sequences;
};