12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/layers/nine_patch_layer.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/layers/nine_patch_layer_impl.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/prioritized_resource.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/resource_update.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/resource_update_queue.h" 1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "cc/resources/scoped_ui_resource.h" 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "cc/resources/ui_resource_bitmap.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/trees/layer_tree_host.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_refptr<NinePatchLayer> NinePatchLayer::Create() { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return make_scoped_refptr(new NinePatchLayer()); 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)NinePatchLayer::NinePatchLayer() : fill_center_(false) {} 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)NinePatchLayer::~NinePatchLayer() {} 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<LayerImpl> NinePatchLayer::CreateLayerImpl( 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerTreeImpl* tree_impl) { 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NinePatchLayerImpl::Create(tree_impl, id()).PassAs<LayerImpl>(); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void NinePatchLayer::SetBorder(const gfx::Rect& border) { 3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (border == border_) 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return; 3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) border_ = border; 3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) SetNeedsCommit(); 3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void NinePatchLayer::SetAperture(const gfx::Rect& aperture) { 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (image_aperture_ == aperture) 3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return; 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) image_aperture_ = aperture; 4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) SetNeedsCommit(); 4368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 4468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 4568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)void NinePatchLayer::SetFillCenter(bool fill_center) { 4668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (fill_center_ == fill_center) 4768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return; 4868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 4968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) fill_center_ = fill_center; 5068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) SetNeedsCommit(); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void NinePatchLayer::PushPropertiesTo(LayerImpl* layer) { 544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) UIResourceLayer::PushPropertiesTo(layer); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NinePatchLayerImpl* layer_impl = static_cast<NinePatchLayerImpl*>(layer); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (!ui_resource_holder_) { 5868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) layer_impl->SetUIResourceId(0); 5968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) } else { 6068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) DCHECK(layer_tree_host()); 61d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) layer_impl->SetLayout(image_aperture_, border_, fill_center_); 6368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) } 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace cc 67