LibreOffice Module slideshow (master) 1
paralleltimecontainer.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20
22#include <delayevent.hxx>
23
24#include <functional>
25
26namespace slideshow::internal {
27
29{
30 // resolve all children:
31 std::size_t const nResolvedNodes =
32 static_cast<std::size_t>(std::count_if(
33 maChildren.begin(), maChildren.end(),
34 std::mem_fn(&AnimationNode::resolve) ));
35 OSL_ENSURE( nResolvedNodes == maChildren.size(),
36 "### resolving all children failed!" );
37
38 if (isDurationIndefinite() && maChildren.empty()) {
39 // deactivate ASAP:
40 auto self(getSelf());
42 makeEvent( [self] () { self->deactivate(); },
43 "ParallelTimeContainer::deactivate") );
44 }
45 else { // use default
47 }
48}
49
51 AnimationNodeSharedPtr const& pChildNode )
52{
53 notifyDeactivatedChild( pChildNode );
54}
55
56} // namespace slideshow::internal
57
58/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual bool resolve()=0
Resolve node start time.
bool notifyDeactivatedChild(AnimationNodeSharedPtr const &pChildNode)
::std::shared_ptr< BaseNode > const & getSelf() const
Definition: basenode.hxx:136
void scheduleDeactivationEvent(EventSharedPtr const &pEvent=EventSharedPtr())
Definition: basenode.cxx:519
virtual void notifyDeactivating(AnimationNodeSharedPtr const &pChildNode) override
Called to notify another AnimationNode's deactivation.
#define makeEvent(f, d)
Definition: delayevent.hxx:131
::std::shared_ptr< AnimationNode > AnimationNodeSharedPtr