| // Copyright 2014 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_ANDROID_COMPOSITOR_LAYER_TAB_LAYER_H_ |
| #define CHROME_BROWSER_ANDROID_COMPOSITOR_LAYER_TAB_LAYER_H_ |
| |
| #include "base/memory/raw_ptr.h" |
| #include "chrome/browser/android/compositor/layer/layer.h" |
| #include "ui/android/resources/nine_patch_resource.h" |
| |
| namespace cc::slim { |
| class Layer; |
| class NinePatchLayer; |
| class SolidColorLayer; |
| } // namespace cc::slim |
| |
| namespace gfx { |
| class Size; |
| } |
| |
| namespace ui { |
| class ResourceManager; |
| } |
| |
| namespace android { |
| |
| class ContentLayer; |
| class TabContentManager; |
| class ToolbarLayer; |
| |
| // Sub layer tree representation of a tab. A TabLayer is not tied to |
| // specific tab. To specialize it call CustomizeForId() and SetProperties(). |
| class TabLayer : public Layer { |
| public: |
| static scoped_refptr<TabLayer> Create(bool incognito, |
| ui::ResourceManager* resource_manager, |
| TabContentManager* tab_content_manager); |
| |
| TabLayer(const TabLayer&) = delete; |
| TabLayer& operator=(const TabLayer&) = delete; |
| |
| // TODO(meiliang): This method needs another parameter, a resource that can be |
| // used to indicate the currently selected tab for the TabLayer. |
| void SetProperties(int id, |
| bool can_use_live_layer, |
| int toolbar_resource_id, |
| int shadow_resource_id, |
| int contour_resource_id, |
| int border_resource_id, |
| int border_inner_shadow_resource_id, |
| int default_background_color, |
| float x, |
| float y, |
| float width, |
| float height, |
| float shadow_width, |
| float shadow_height, |
| float alpha, |
| float border_alpha, |
| float border_inner_shadow_alpha, |
| float contour_alpha, |
| float shadow_alpha, |
| float border_scale, |
| float saturation, |
| float static_to_view_blend, |
| float content_width, |
| float content_height, |
| float view_width, |
| bool show_toolbar, |
| int default_theme_color, |
| int toolbar_background_color, |
| bool anonymize_toolbar, |
| int toolbar_textbox_resource_id, |
| int toolbar_textbox_background_color, |
| float content_offset); |
| |
| bool is_incognito() const { return incognito_; } |
| |
| scoped_refptr<cc::slim::Layer> layer() override; |
| |
| static void ComputePaddingPositions(const gfx::Size& content_size, |
| const gfx::Size& desired_size, |
| gfx::Rect* side_padding_rect, |
| gfx::Rect* bottom_padding_rect); |
| |
| protected: |
| TabLayer(bool incognito, |
| ui::ResourceManager* resource_manager, |
| TabContentManager* tab_content_manager); |
| ~TabLayer() override; |
| |
| private: |
| const bool incognito_; |
| raw_ptr<ui::ResourceManager> resource_manager_; |
| raw_ptr<TabContentManager> tab_content_manager_; |
| |
| // [layer]-+-[toolbar] |
| // +-[front border] |
| // +-[content] |
| // +-[padding] |
| // +-[contour_shadow] |
| // +-[shadow] |
| scoped_refptr<cc::slim::Layer> layer_; |
| scoped_refptr<ToolbarLayer> toolbar_layer_; |
| scoped_refptr<ContentLayer> content_; |
| scoped_refptr<cc::slim::SolidColorLayer> side_padding_; |
| scoped_refptr<cc::slim::SolidColorLayer> bottom_padding_; |
| |
| scoped_refptr<cc::slim::NinePatchLayer> front_border_; |
| scoped_refptr<cc::slim::NinePatchLayer> front_border_inner_shadow_; |
| |
| scoped_refptr<cc::slim::NinePatchLayer> contour_shadow_; |
| |
| scoped_refptr<cc::slim::NinePatchLayer> shadow_; |
| }; |
| |
| } // namespace android |
| |
| #endif // CHROME_BROWSER_ANDROID_COMPOSITOR_LAYER_TAB_LAYER_H_ |