| // Copyright (c) 2016 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. |
| |
| #ifndef CC_TREES_TARGET_PROPERTY_H_ |
| #define CC_TREES_TARGET_PROPERTY_H_ |
| |
| #include <bitset> |
| |
| #include "base/containers/flat_map.h" |
| |
| namespace cc { |
| |
| static constexpr size_t kMaxTargetPropertyIndex = 32u; |
| |
| namespace TargetProperty { |
| |
| // Must be zero-based as this will be stored in a bitset. |
| enum Type { |
| TRANSFORM = 0, |
| OPACITY, |
| FILTER, |
| SCROLL_OFFSET, |
| BACKGROUND_COLOR, |
| BOUNDS, |
| CSS_CUSTOM_PROPERTY, |
| // These sentinels must be last |
| FIRST_TARGET_PROPERTY = TRANSFORM, |
| LAST_TARGET_PROPERTY = CSS_CUSTOM_PROPERTY |
| }; |
| |
| } // namespace TargetProperty |
| |
| // A set of target properties. |
| using TargetProperties = std::bitset<kMaxTargetPropertyIndex>; |
| |
| // A map of target property to ElementId. |
| // flat_map was chosen because there are expected to be relatively few entries |
| // in the map. For low number of entries, flat_map is known to perform better |
| // than other map implementations. |
| struct ElementId; |
| using PropertyToElementIdMap = base::flat_map<TargetProperty::Type, ElementId>; |
| |
| } // namespace cc |
| |
| #endif // CC_TREES_TARGET_PROPERTY_H_ |