1 /***************************************************************************
3 * Copyright 2010,2011 BMW Car IT GmbH
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 ****************************************************************************/
19 #include "LayerAddSurfaceCommand.h"
20 #include "ICommandExecutor.h"
24 ExecutionResult LayerAddSurfaceCommand::execute(ICommandExecutor* executor)
26 Scene& scene = *(executor->getScene());
28 ExecutionResult result = ExecutionFailed;
30 Layer* layer = scene.getLayer(m_layerid);
31 Surface* surface = scene.getSurface(m_surfaceid);
33 if (layer != NULL && surface != NULL)
35 if (layer->addSurface(surface))
37 LOG_DEBUG("LayerAddSurfaceCommand","Adding surface(" << m_surfaceid << ")" << surface->getID() << " to layer(" << m_layerid << ") " << layer->getID());
38 LOG_DEBUG("LayerAddSurfaceCommand", "Layer now has #surfaces:" << layer->getAllSurfaces().size());
39 result = surface->hasNativeContent() ? ExecutionSuccessRedraw : ExecutionSuccess;
43 unsigned int layer_id = surface->getContainingLayerId();
44 LOG_WARNING("LayerAddSurfaceCommand","surface : id [ " << m_surfaceid << " ] already belongs to layer : id [ " << layer_id << " ]");
45 result = (m_layerid == layer_id) ? ExecutionSuccess : ExecutionFailed;
47 surface->calculateTargetDestination(layer->getSourceRegion(),layer->getDestinationRegion());
53 const std::string LayerAddSurfaceCommand::getString()
55 std::stringstream description;
56 description << "LayerAddSurfaceCommand("
57 << "layerid=" << m_layerid << "(0x" << std::hex << m_layerid << ")" << std::dec
58 << ", surfaceid=" << m_surfaceid << "(0x" << std::hex << m_surfaceid << ")" << std::dec
60 return description.str();