1 #ifndef DALI_INTERNAL_ACTOR_GESTURE_DATA_H
2 #define DALI_INTERNAL_ACTOR_GESTURE_DATA_H
5 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <dali/internal/event/events/gesture-detector-impl.h>
29 * Holds gesture specific data for an Actor
31 class ActorGestureData
40 * Non-virtual Destructor
45 * Adds a gesture detector to the data so that the owning actor is aware that it requires this
47 * @param[in] detector The detector being added.
48 * @note A raw pointer to the detector is stored, so the detector MUST remove itself when it is
49 * destroyed using RemoveGestureDetector()
51 void AddGestureDetector(GestureDetector& detector);
54 * Removes a previously added gesture detector from the data. If no more gesture detectors of
55 * this type are registered then the actor owning this data will no longer be hit-tested for that
57 * @param[in] detector The detector to remove.
59 void RemoveGestureDetector(GestureDetector& detector);
62 * Queries whether the actor requires the gesture type.
63 * @param[in] type The gesture type.
64 * @return true if the gesture is required, false otherwise.
66 inline bool IsGestureRequired(GestureType::Value type) const
68 return type & gesturesRequired;
72 * Retrieve a reference to the detectors for the given type.
73 * @param[in] type The container type required
74 * @pre Ensure IsGestureRequired() is used to check if the container is actually available.
76 GestureDetectorContainer& GetGestureDetectorContainer(GestureType::Value type);
80 * Helper to retrieve the appropriate container type.
81 * @param[in] type The container type required.
83 inline GestureDetectorContainer*& GetContainerPtr(GestureType::Value type);
86 GestureType::Value gesturesRequired; ///< Stores which gestures are required
88 GestureDetectorContainer* panDetectors; ///< Pointer to a container of pan-detectors
89 GestureDetectorContainer* pinchDetectors; ///< Pointer to a container of pinch-detectors
90 GestureDetectorContainer* longPressDetectors; ///< Pointer to a container of long-press-detectors
91 GestureDetectorContainer* tapDetectors; ///< Pointer to a container of tap-detectors
92 GestureDetectorContainer* rotationDetectors; ///< Pointer to a container of tap-detectors
95 } // namespace Internal
99 #endif // DALI_INTERNAL_ACTOR_GESTURE_DATA_H