1718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams/*
2718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams * Copyright (C) 2009 The Android Open Source Project
3718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams *
4718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams * you may not use this file except in compliance with the License.
6718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams * You may obtain a copy of the License at
7718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams *
8718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams *
10718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams * Unless required by applicable law or agreed to in writing, software
11718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams * See the License for the specific language governing permissions and
14718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams * limitations under the License.
15718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams */
16718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
17718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams#ifndef ANDROID_COMPONENT_H
18718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams#define ANDROID_COMPONENT_H
19718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
20718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams#include "rsUtils.h"
21718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
22718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams// ---------------------------------------------------------------------------
23718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsnamespace android {
24718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsnamespace renderscript {
25718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
26718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
27718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams// An element is a group of Components that occupies one cell in a structure.
28ed9f210568082dd6d1d8a0c92c693d574d87d545Alex Sakhartchoukclass Component {
29718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samspublic:
30718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    Component();
31718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    ~Component();
32718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
33718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    void set(RsDataType dt, RsDataKind dk, bool norm, uint32_t vecSize=1);
34718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
35718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    void dumpLOGV(const char *prefix) const;
36718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
37718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    RsDataType getType() const {return mType;}
38718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    RsDataKind getKind() const {return mKind;}
39718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    bool getIsNormalized() const {return mNormalized;}
40718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    uint32_t getVectorSize() const {return mVectorSize;}
41718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    bool getIsFloat() const {return mIsFloat;}
42718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    bool getIsSigned() const {return mIsSigned;}
43718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    uint32_t getBits() const {return mBits;}
44718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
45aa7d2884cb563f87294003981e03e37a1abeb961Alex Sakhartchouk    // Helpers for reading / writing this class out
46aa7d2884cb563f87294003981e03e37a1abeb961Alex Sakhartchouk    void serialize(OStream *stream) const;
47aa7d2884cb563f87294003981e03e37a1abeb961Alex Sakhartchouk    void loadFromStream(IStream *stream);
48aa7d2884cb563f87294003981e03e37a1abeb961Alex Sakhartchouk
49b28ca96fd69be0d3d12106f81c415439d185b017Jason Sams    bool isReference() const;
50b28ca96fd69be0d3d12106f81c415439d185b017Jason Sams
51718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsprotected:
52718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    RsDataType mType;
53718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    RsDataKind mKind;
54718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    bool mNormalized;
55718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    uint32_t mVectorSize;
56718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
57718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    // derived
58718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    uint32_t mBits;
59718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    uint32_t mTypeBits;
60718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    bool mIsFloat;
61718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    bool mIsSigned;
62718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams    bool mIsPixel;
63718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams};
64718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
65718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams}
66718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams}
67718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
68718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams#endif
69718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams
70