mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 21:01:08 +00:00
ee2dcf8fe6
This mostly just moves code around, to minimize potential behavior changes. There are some cleanups that we should try to do long term (this "have an array with n different counts" is pretty weird). But for now this should unblock people. The destination struct (nsStyleUIReset) was chosen mainly because it's small and non-inherited, and it doesn't seem like a worse place than nsStyleDisplay. Differential Revision: https://phabricator.services.mozilla.com/D144183
73 lines
2.7 KiB
C++
73 lines
2.7 KiB
C++
/* -*- 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/. */
|
|
|
|
/* Code to start and animate CSS transitions. */
|
|
|
|
#ifndef nsTransitionManager_h_
|
|
#define nsTransitionManager_h_
|
|
|
|
#include "mozilla/dom/CSSTransition.h"
|
|
#include "AnimationCommon.h"
|
|
#include "nsISupportsImpl.h"
|
|
|
|
class nsPresContext;
|
|
class nsCSSPropertyIDSet;
|
|
struct nsStyleUIReset;
|
|
|
|
namespace mozilla {
|
|
class ComputedStyle;
|
|
enum class PseudoStyleType : uint8_t;
|
|
} // namespace mozilla
|
|
|
|
class nsTransitionManager final
|
|
: public mozilla::CommonAnimationManager<mozilla::dom::CSSTransition> {
|
|
public:
|
|
explicit nsTransitionManager(nsPresContext* aPresContext)
|
|
: mozilla::CommonAnimationManager<mozilla::dom::CSSTransition>(
|
|
aPresContext) {}
|
|
|
|
~nsTransitionManager() final = default;
|
|
|
|
typedef mozilla::AnimationCollection<mozilla::dom::CSSTransition>
|
|
CSSTransitionCollection;
|
|
|
|
/**
|
|
* Update transitions for stylo.
|
|
*/
|
|
bool UpdateTransitions(mozilla::dom::Element* aElement,
|
|
mozilla::PseudoStyleType aPseudoType,
|
|
const mozilla::ComputedStyle& aOldStyle,
|
|
const mozilla::ComputedStyle& aNewStyle);
|
|
|
|
protected:
|
|
typedef nsTArray<RefPtr<mozilla::dom::CSSTransition>>
|
|
OwningCSSTransitionPtrArray;
|
|
|
|
// Update transitions. This will start new transitions,
|
|
// replace existing transitions, and stop existing transitions
|
|
// as needed. aDisp and aElement must be non-null.
|
|
// aElementTransitions is the collection of current transitions, and it
|
|
// could be a nullptr if we don't have any transitions.
|
|
bool DoUpdateTransitions(const nsStyleUIReset& aStyle,
|
|
mozilla::dom::Element* aElement,
|
|
mozilla::PseudoStyleType aPseudoType,
|
|
CSSTransitionCollection*& aElementTransitions,
|
|
const mozilla::ComputedStyle& aOldStyle,
|
|
const mozilla::ComputedStyle& aNewStyle);
|
|
|
|
// Returns whether the transition actually started.
|
|
bool ConsiderInitiatingTransition(
|
|
nsCSSPropertyID aProperty, const nsStyleUIReset& aStyle,
|
|
uint32_t transitionIdx, mozilla::dom::Element* aElement,
|
|
mozilla::PseudoStyleType aPseudoType,
|
|
CSSTransitionCollection*& aElementTransitions,
|
|
const mozilla::ComputedStyle& aOldStyle,
|
|
const mozilla::ComputedStyle& aNewStyle,
|
|
nsCSSPropertyIDSet& aPropertiesChecked);
|
|
};
|
|
|
|
#endif /* !defined(nsTransitionManager_h_) */
|