Index: cc/quads/nine_patch_generator.h |
diff --git a/cc/layers/nine_patch_layer_impl.h b/cc/quads/nine_patch_generator.h |
similarity index 63% |
copy from cc/layers/nine_patch_layer_impl.h |
copy to cc/quads/nine_patch_generator.h |
index c7a1c2e8b28010932cc7be852bdca437a260cd67..4be36540cad8f18b4fff3e592a27e47d19897845 100644 |
--- a/cc/layers/nine_patch_layer_impl.h |
+++ b/cc/quads/nine_patch_generator.h |
@@ -1,20 +1,19 @@ |
-// Copyright 2012 The Chromium Authors. All rights reserved. |
+// Copyright 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_LAYERS_NINE_PATCH_LAYER_IMPL_H_ |
-#define CC_LAYERS_NINE_PATCH_LAYER_IMPL_H_ |
+#ifndef CC_QUADS_NINE_PATCH_GENERATOR_H_ |
+#define CC_QUADS_NINE_PATCH_GENERATOR_H_ |
#include <string> |
+#include <vector> |
#include "base/macros.h" |
#include "base/memory/ptr_util.h" |
#include "cc/base/cc_export.h" |
-#include "cc/layers/layer_impl.h" |
-#include "cc/layers/ui_resource_layer_impl.h" |
-#include "cc/resources/resource_provider.h" |
#include "cc/resources/ui_resource_client.h" |
#include "ui/gfx/geometry/rect.h" |
+#include "ui/gfx/geometry/rect_f.h" |
#include "ui/gfx/geometry/size.h" |
namespace base { |
@@ -23,13 +22,24 @@ class DictionaryValue; |
namespace cc { |
-class CC_EXPORT NinePatchLayerImpl : public UIResourceLayerImpl { |
+class LayerImpl; |
+class RenderPass; |
+class SharedQuadState; |
+ |
+class CC_EXPORT NinePatchGenerator { |
public: |
- static std::unique_ptr<NinePatchLayerImpl> Create(LayerTreeImpl* tree_impl, |
- int id) { |
- return base::WrapUnique(new NinePatchLayerImpl(tree_impl, id)); |
- } |
- ~NinePatchLayerImpl() override; |
+ class Patch { |
+ public: |
+ Patch(const gfx::RectF& image_rect, |
+ const gfx::Size& total_image_bounds, |
+ const gfx::RectF& output_rect); |
+ |
+ gfx::RectF image_rect; |
+ gfx::RectF normalized_image_rect; |
+ gfx::RectF output_rect; |
+ }; |
+ |
+ NinePatchGenerator(); |
// The bitmap stretches out the bounds of the layer. The following picture |
// illustrates the parameters associated with the dimensions. |
@@ -77,55 +87,45 @@ class CC_EXPORT NinePatchLayerImpl : public UIResourceLayerImpl { |
// |border| = (A, C, A + B, C + D) |
// |occlusion_rectangle| = (I, J, K, L) |
// |fill_center| indicates whether to draw the center quad or not. |
- void SetLayout(const gfx::Rect& image_aperture, |
+ bool SetLayout(const gfx::Size& image_bounds, |
+ const gfx::Size& output_bounds, |
+ const gfx::Rect& image_aperture, |
const gfx::Rect& border, |
- const gfx::Rect& layer_occlusion, |
+ const gfx::Rect& output_occlusion, |
bool fill_center, |
bool nearest_neighbor); |
- std::unique_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override; |
- void PushPropertiesTo(LayerImpl* layer) override; |
+ std::vector<Patch> GeneratePatches() const; |
- void AppendQuads(RenderPass* render_pass, |
- AppendQuadsData* append_quads_data) override; |
+ void AppendQuads(LayerImpl* layer_impl, |
+ UIResourceId ui_resource_id, |
+ RenderPass* render_pass, |
+ SharedQuadState* shared_quad_state, |
+ const std::vector<Patch>& patches); |
- std::unique_ptr<base::DictionaryValue> LayerTreeAsJson() override; |
- |
- protected: |
- NinePatchLayerImpl(LayerTreeImpl* tree_impl, int id); |
+ void AsJson(base::DictionaryValue* dictionary) const; |
private: |
- class Patch { |
- public: |
- Patch(const gfx::RectF& image_rect, const gfx::RectF& layer_rect); |
- |
- gfx::RectF image_rect; |
- gfx::RectF layer_rect; |
- }; |
- |
- const char* LayerTypeAsString() const override; |
- |
void CheckGeometryLimitations(); |
std::vector<Patch> ComputeQuadsWithOcclusion() const; |
std::vector<Patch> ComputeQuadsWithoutOcclusion() const; |
- // The transparent center region that shows the parent layer's contents in |
- // image space. |
+ // The center patch in image space. |
gfx::Rect image_aperture_; |
// An inset border that the patches will be mapped to. |
gfx::Rect border_; |
- bool fill_center_; |
+ gfx::Size image_bounds_; |
+ gfx::Size output_bounds_; |
+ bool fill_center_; |
bool nearest_neighbor_; |
- gfx::Rect layer_occlusion_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NinePatchLayerImpl); |
+ gfx::Rect output_occlusion_; |
}; |
} // namespace cc |
-#endif // CC_LAYERS_NINE_PATCH_LAYER_IMPL_H_ |
+#endif // CC_QUADS_NINE_PATCH_GENERATOR_H_ |