2 * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
4 * This program is licensed under the terms and conditions of the
5 * Apache License, version 2.0. The full text of the Apache License is at
6 * http://www.apache.org/licenses/LICENSE-2.0
10 /*========================================================================*/
12 * @file CicoSCLayer.cpp
14 * @brief This file is implementation of CicoSCLayer class
16 /*========================================================================*/
20 #include "CicoSCLayer.h"
23 //--------------------------------------------------------------------------
25 * @brief default constructor
27 //--------------------------------------------------------------------------
28 CicoSCLayer::CicoSCLayer()
29 : layerid(-1), type(-1), width(-1), height(-1),
30 displayid(-1), numsurfaces(0), menuoverlap(false)
33 surfaceids = (int *)malloc(ICO_SC_LAYER_TABLE_INITIAL * sizeof(int));
35 maxsurfaces = ICO_SC_LAYER_TABLE_INITIAL;
42 //--------------------------------------------------------------------------
46 //--------------------------------------------------------------------------
47 CicoSCLayer::~CicoSCLayer()
57 //--------------------------------------------------------------------------
61 //--------------------------------------------------------------------------
63 CicoSCLayer::addSurface(int surfaceid, bool top)
67 ICO_DBG("CicoSCLayer::addSurface(%08x,%d)", surfaceid, top);
70 for (idx = 0; idx < numsurfaces; idx++) {
71 if (surfaceids[idx] != surfaceid) {
72 surfaceids[idx2++] = surfaceids[idx];
77 if (numsurfaces >= maxsurfaces) {
78 maxsurfaces = numsurfaces + ICO_SC_LAYER_TABLE_EXTENSION;
79 wksurfaceids = (int *)malloc(maxsurfaces * sizeof(int));
81 ICO_ERR("CicoSCLayer::addSurface: Out of Memory");
85 memcpy(wksurfaceids, surfaceids, numsurfaces * sizeof(int));
88 surfaceids = wksurfaceids;
91 surfaceids[numsurfaces] = surfaceid;
94 for (idx = numsurfaces; idx > 0; idx--) {
95 surfaceids[idx] = surfaceids[idx-1];
97 surfaceids[0] = surfaceid;
102 //--------------------------------------------------------------------------
104 * @brief removeSurface
106 //--------------------------------------------------------------------------
108 CicoSCLayer::removeSurface(int surfaceid)
111 ICO_DBG("CicoSCLayer::removeSurface(%08x)", surfaceid);
114 for (idx = 0; idx < numsurfaces; idx++) {
115 if (surfaceids[idx] != surfaceid) {
116 surfaceids[idx2++] = surfaceids[idx];
122 //--------------------------------------------------------------------------
124 * @brief is_topSurface
126 //--------------------------------------------------------------------------
128 CicoSCLayer::is_topSurface(int surfaceid)
130 return (numsurfaces > 0) && (surfaceids[numsurfaces-1] == surfaceid);
133 //--------------------------------------------------------------------------
135 * @brief is_buttomSurface
137 //--------------------------------------------------------------------------
139 CicoSCLayer::is_buttomSurface(int surfaceid)
141 return (numsurfaces > 0) && (surfaceids[0] == surfaceid);
144 //--------------------------------------------------------------------------
148 //--------------------------------------------------------------------------
150 CicoSCLayer::getSurfaces(int *retsurfaces)
152 *retsurfaces = numsurfaces;
156 //--------------------------------------------------------------------------
158 * @brief dump log this class member variables
160 //--------------------------------------------------------------------------
162 CicoSCLayer::dump(void)
164 ICO_DBG("CicoSCLayer: layerid=%d type=%d width=%d height=%d "
165 "displayid =%d menuoverlap=%s",
166 layerid, type, width, height, displayid,
167 menuoverlap ? "true" : "false");
169 // vim:set expandtab ts=4 sw=4: