/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include"nsCSSPropertyIDSet.h" #include"nsDisplayItemTypes.h" #include"mozilla/Array.h" #include"mozilla/UniquePtr.h" #include"mozilla/FunctionRef.h" #include"mozilla/layers/AnimationStorageData.h" #include"mozilla/layers/LayersMessages.h"// for TransformData
struct RawServoAnimationValue; class nsIContent; class nsIFrame;
namespace mozilla {
class nsDisplayItem; class nsDisplayListBuilder; class EffectSet; struct AnimationProperty;
namespace dom { class Animation;
} // namespace dom
namespace gfx { class Path;
} // namespace gfx
namespace layers {
class Animation; class CompositorAnimations; class Layer; class WebRenderLayerManager; struct CompositorAnimationData; struct PropertyAnimationGroup;
class AnimationInfo final { typedef nsTArray<Animation> AnimationArray;
public:
AnimationInfo();
~AnimationInfo();
// Ensure that this AnimationInfo has a valid (non-zero) animations id. This // value is unique across layers. void EnsureAnimationsId();
// Call AddAnimation to add a new animation to this layer from layout code. // Caller must fill in all the properties of the returned animation. // A later animation overrides an earlier one.
Animation* AddAnimation();
// These are a parallel to AddAnimation and clearAnimations, except // they add pending animations that apply only when the next // transaction is begun. (See also // SetBaseTransformForNextTransaction.)
Animation* AddAnimationForNextTransaction();
// In case of continuation, |aFrame| must be the first or the last // continuation frame, otherwise this function might return Nothing(). static Maybe<uint64_t> GetGenerationFromFrame(
nsIFrame* aFrame, DisplayItemType aDisplayItemKey);
using CompositorAnimatableDisplayItemTypes =
Array<DisplayItemType,
nsCSSPropertyIDSet::CompositorAnimatableDisplayItemCount()>; using AnimationGenerationCallback = FunctionRef<bool( const Maybe<uint64_t>& aGeneration, DisplayItemType aDisplayItemType)>; // Enumerates animation generations on |aFrame| for the given display item // types and calls |aCallback| with the animation generation. // // The enumeration stops if |aCallback| returns false. staticvoid EnumerateGenerationOnFrame( const nsIFrame* aFrame, const nsIContent* aContent, const CompositorAnimatableDisplayItemTypes& aDisplayItemTypes,
AnimationGenerationCallback);
// mAnimations (and mPendingAnimations) are only set on the main thread. // // Once the animations are received on the compositor thread/process we // use AnimationHelper::ExtractAnimations to transform the rather compact // representation of animation data we transfer into something we can more // readily use for sampling and then store it in mPropertyAnimationGroups // (below) or CompositorAnimationStorage.mAnimations for WebRender.
AnimationArray mAnimations;
UniquePtr<AnimationArray> mPendingAnimations;
uint64_t mCompositorAnimationsId; // The extracted data produced by AnimationHelper::ExtractAnimations().
AnimationStorageData mStorageData; // If this layer is used for OMTA, then this counter is used to ensure we // stay in sync with the animation manager
Maybe<uint64_t> mAnimationGeneration; bool mMutated;
};
} // namespace layers
} // namespace mozilla
#endif// GFX_ANIMATIONINFO_H
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.