1 // Copyright 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "cc/layers/nine_patch_layer.h" 6 7 #include "cc/layers/nine_patch_layer_impl.h" 8 #include "cc/resources/prioritized_resource.h" 9 #include "cc/resources/resource_update.h" 10 #include "cc/resources/resource_update_queue.h" 11 #include "cc/resources/scoped_ui_resource.h" 12 #include "cc/resources/ui_resource_bitmap.h" 13 #include "cc/trees/layer_tree_host.h" 14 15 namespace cc { 16 17 scoped_refptr<NinePatchLayer> NinePatchLayer::Create() { 18 return make_scoped_refptr(new NinePatchLayer()); 19 } 20 21 NinePatchLayer::NinePatchLayer() : fill_center_(false) {} 22 23 NinePatchLayer::~NinePatchLayer() {} 24 25 scoped_ptr<LayerImpl> NinePatchLayer::CreateLayerImpl( 26 LayerTreeImpl* tree_impl) { 27 return NinePatchLayerImpl::Create(tree_impl, id()).PassAs<LayerImpl>(); 28 } 29 30 void NinePatchLayer::SetBorder(const gfx::Rect& border) { 31 if (border == border_) 32 return; 33 border_ = border; 34 SetNeedsCommit(); 35 } 36 37 void NinePatchLayer::SetAperture(const gfx::Rect& aperture) { 38 if (image_aperture_ == aperture) 39 return; 40 41 image_aperture_ = aperture; 42 SetNeedsCommit(); 43 } 44 45 void NinePatchLayer::SetFillCenter(bool fill_center) { 46 if (fill_center_ == fill_center) 47 return; 48 49 fill_center_ = fill_center; 50 SetNeedsCommit(); 51 } 52 53 void NinePatchLayer::PushPropertiesTo(LayerImpl* layer) { 54 UIResourceLayer::PushPropertiesTo(layer); 55 NinePatchLayerImpl* layer_impl = static_cast<NinePatchLayerImpl*>(layer); 56 57 if (!ui_resource_holder_) { 58 layer_impl->SetUIResourceId(0); 59 } else { 60 DCHECK(layer_tree_host()); 61 62 layer_impl->SetLayout(image_aperture_, border_, fill_center_); 63 } 64 } 65 66 } // namespace cc 67