| // Copyright 2019 The Cobalt Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #ifndef COBALT_UI_NAVIGATION_INTERFACE_H_ |
| #define COBALT_UI_NAVIGATION_INTERFACE_H_ |
| |
| #include "starboard/configuration.h" |
| #include "starboard/ui_navigation.h" |
| |
| namespace cobalt { |
| namespace ui_navigation { |
| |
| // Alias the starboard interface. See starboard/ui_navigation.h for details. |
| using NativeItem = SbUiNavItem; |
| using NativeItemType = SbUiNavItemType; |
| constexpr NativeItemType kNativeItemTypeFocus = kSbUiNavItemTypeFocus; |
| constexpr NativeItemType kNativeItemTypeContainer = kSbUiNavItemTypeContainer; |
| using NativeItemDir = SbUiNavItemDir; |
| using NativeMatrix2x3 = SbUiNavMatrix2x3; |
| using NativeMatrix4 = SbUiNavMatrix4; |
| using NativeCallbacks = SbUiNavCallbacks; |
| #define kNativeItemInvalid kSbUiNavItemInvalid |
| |
| struct NativeInterface { |
| NativeItem (*create_item)(NativeItemType type, |
| const NativeCallbacks* callbacks, |
| void* callback_context); |
| void (*destroy_item)(NativeItem item); |
| void (*set_item_bounds)(NativeItem item, float scroll_top_lower_bound, |
| float scroll_left_lower_bound, |
| float scroll_top_upper_bound, |
| float scroll_left_upper_bound); |
| void (*get_item_bounds)(NativeItem item, float* out_scroll_top_lower_bound, |
| float* out_scroll_left_lower_bound, |
| float* out_scroll_top_upper_bound, |
| float* out_scroll_left_upper_bound); |
| void (*set_focus)(NativeItem item); |
| void (*set_item_enabled)(NativeItem item, bool enabled); |
| void (*set_item_dir)(NativeItem item, NativeItemDir dir); |
| void (*set_item_focus_duration)(NativeItem item, float seconds); |
| void (*set_item_size)(NativeItem item, float width, float height); |
| void (*set_item_transform)(NativeItem item, const NativeMatrix2x3* transform); |
| bool (*get_item_focus_transform)(NativeItem item, |
| NativeMatrix4* out_transform); |
| bool (*get_item_focus_vector)(NativeItem item, float* out_x, float* out_y); |
| void (*set_item_container_window)(NativeItem item, SbWindow window); |
| void (*set_item_container_item)(NativeItem item, NativeItem container); |
| void (*set_item_content_offset)(NativeItem item, float content_offset_x, |
| float content_offset_y); |
| void (*get_item_content_offset)(NativeItem item, float* out_content_offset_x, |
| float* out_content_offset_y); |
| void (*do_batch_update)(void (*update_function)(void*), void* context); |
| }; |
| |
| // Retrieve the interface to use for UI navigation. |
| extern const NativeInterface& GetInterface(); |
| |
| } // namespace ui_navigation |
| } // namespace cobalt |
| |
| #endif // COBALT_UI_NAVIGATION_INTERFACE_H_ |