rsFileA3D.h revision fb6b614bcea88a587a7ea4530be45ff0ffa0210e
1a5597fcd411badad50c1345b3eca26453da45bbbJason Sams/*
2a5597fcd411badad50c1345b3eca26453da45bbbJason Sams * Copyright (C) 2009 The Android Open Source Project
3a5597fcd411badad50c1345b3eca26453da45bbbJason Sams *
4a5597fcd411badad50c1345b3eca26453da45bbbJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5a5597fcd411badad50c1345b3eca26453da45bbbJason Sams * you may not use this file except in compliance with the License.
6a5597fcd411badad50c1345b3eca26453da45bbbJason Sams * You may obtain a copy of the License at
7a5597fcd411badad50c1345b3eca26453da45bbbJason Sams *
8a5597fcd411badad50c1345b3eca26453da45bbbJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9a5597fcd411badad50c1345b3eca26453da45bbbJason Sams *
10a5597fcd411badad50c1345b3eca26453da45bbbJason Sams * Unless required by applicable law or agreed to in writing, software
11a5597fcd411badad50c1345b3eca26453da45bbbJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12a5597fcd411badad50c1345b3eca26453da45bbbJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a5597fcd411badad50c1345b3eca26453da45bbbJason Sams * See the License for the specific language governing permissions and
14a5597fcd411badad50c1345b3eca26453da45bbbJason Sams * limitations under the License.
15a5597fcd411badad50c1345b3eca26453da45bbbJason Sams */
16a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
17a5597fcd411badad50c1345b3eca26453da45bbbJason Sams#ifndef ANDROID_RS_FILE_A3D_H
18a5597fcd411badad50c1345b3eca26453da45bbbJason Sams#define ANDROID_RS_FILE_A3D_H
19a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
20a5597fcd411badad50c1345b3eca26453da45bbbJason Sams#include "RenderScript.h"
21a5597fcd411badad50c1345b3eca26453da45bbbJason Sams#include "rsFileA3DDecls.h"
22a5597fcd411badad50c1345b3eca26453da45bbbJason Sams#include "rsMesh.h"
23a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
24a5597fcd411badad50c1345b3eca26453da45bbbJason Sams#include <utils/String8.h>
25fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#include "rsStream.h"
26a5597fcd411badad50c1345b3eca26453da45bbbJason Sams#include <stdio.h>
27a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
28a5597fcd411badad50c1345b3eca26453da45bbbJason Sams// ---------------------------------------------------------------------------
29a5597fcd411badad50c1345b3eca26453da45bbbJason Samsnamespace android {
30a5597fcd411badad50c1345b3eca26453da45bbbJason Samsnamespace renderscript {
31a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
32a5597fcd411badad50c1345b3eca26453da45bbbJason Samsclass FileA3D
33a5597fcd411badad50c1345b3eca26453da45bbbJason Sams{
34a5597fcd411badad50c1345b3eca26453da45bbbJason Samspublic:
35a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    FileA3D();
36a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    ~FileA3D();
37a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
38a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    uint32_t mMajorVersion;
39a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    uint32_t mMinorVersion;
40a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    uint64_t mIndexOffset;
41a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    uint64_t mStringTableOffset;
42a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    bool mUse64BitOffsets;
43a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
44a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    struct A3DIndexEntry {
45a5597fcd411badad50c1345b3eca26453da45bbbJason Sams        String8 mID;
46fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk        A3DClassID mType;
47a5597fcd411badad50c1345b3eca26453da45bbbJason Sams        uint64_t mOffset;
48a5597fcd411badad50c1345b3eca26453da45bbbJason Sams        void * mRsObj;
49a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    };
50a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
51a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    bool load(Context *rsc, FILE *f);
52fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk    size_t getNumLoadedEntries() const;
53fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk    const A3DIndexEntry* getLoadedEntry(size_t index) const;
54fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk    ObjectBase *initializeFromEntry(const A3DIndexEntry *entry);
55a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
56fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk    void appendToFile(ObjectBase *obj);
57fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk    bool writeFile(const char *filename);
58a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
59fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchoukprotected:
60a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
61a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    const uint8_t * mData;
62a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    void * mAlloc;
63a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    uint64_t mDataSize;
64a5597fcd411badad50c1345b3eca26453da45bbbJason Sams    Context * mRsc;
65a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
66fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk    OStream *mWriteStream;
67fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk    Vector<A3DIndexEntry*> mWriteIndex;
68a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
69fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk    IStream *mReadStream;
70fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk    Vector<A3DIndexEntry*> mIndex;
71a5597fcd411badad50c1345b3eca26453da45bbbJason Sams};
72a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
73a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
74a5597fcd411badad50c1345b3eca26453da45bbbJason Sams}
75a5597fcd411badad50c1345b3eca26453da45bbbJason Sams}
76a5597fcd411badad50c1345b3eca26453da45bbbJason Sams#endif //ANDROID_RS_FILE_A3D_H
77a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
78a5597fcd411badad50c1345b3eca26453da45bbbJason Sams
79