rsElement.h revision cb0550f52a816ba79ea5abed8fa580a07c406d38
1/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef ANDROID_STRUCTURED_ELEMENT_H
18#define ANDROID_STRUCTURED_ELEMENT_H
19
20#include "rsComponent.h"
21
22// ---------------------------------------------------------------------------
23namespace android {
24namespace renderscript {
25
26
27// An element is a group of Components that occupies one cell in a structure.
28class Element : public ObjectBase
29{
30public:
31    Element(Context *, uint32_t count);
32    ~Element();
33
34
35    void setComponent(uint32_t idx, Component *c);
36
37    uint32_t getGLType() const;
38    uint32_t getGLFormat() const;
39
40
41    size_t getSizeBits() const;
42    size_t getSizeBytes() const {
43        return (getSizeBits() + 7) >> 3;
44    }
45
46    size_t getComponentOffsetBits(uint32_t componentNumber) const;
47    size_t getComponentOffsetBytes(uint32_t componentNumber) const {
48        return (getComponentOffsetBits(componentNumber) + 7) >> 3;
49    }
50
51    uint32_t getComponentCount() const {return mComponentCount;}
52    Component * getComponent(uint32_t idx) const {return mComponents[idx].get();}
53
54
55    void dumpLOGV(const char *prefix) const;
56
57protected:
58    // deallocate any components that are part of this element.
59    void clear();
60
61    size_t mComponentCount;
62    ObjectBaseRef<Component> * mComponents;
63    //uint32_t *mOffsetTable;
64
65    Element(Context *);
66};
67
68
69class ElementState {
70public:
71    ElementState();
72    ~ElementState();
73
74    Vector<Component *> mComponentBuildList;
75};
76
77
78}
79}
80#endif //ANDROID_STRUCTURED_ELEMENT_H
81