1c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams/*
2c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams * Copyright (C) 2009 The Android Open Source Project
3c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams *
4c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams * you may not use this file except in compliance with the License.
6c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams * You may obtain a copy of the License at
7c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams *
8c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams *
10c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams * Unless required by applicable law or agreed to in writing, software
11c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams * See the License for the specific language governing permissions and
14c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams * limitations under the License.
15c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams */
16c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
17c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams#ifndef ANDROID_RS_ANIMATION_H
18c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams#define ANDROID_RS_ANIMATION_H
19c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
20c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams#include "rsUtils.h"
21c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams#include "rsObjectBase.h"
224edf030cbb7c6ac08dc563335c2af73c20f6e2e5Alex Sakhartchouk#include "rsDefines.h"
23c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams// ---------------------------------------------------------------------------
24c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Samsnamespace android {
25c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Samsnamespace renderscript {
26c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
27c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
28afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukclass Animation : public ObjectBase {
29c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Samspublic:
30c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    ~Animation();
31c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
32c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    static Animation * create(Context *rsc,
33c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams                              const float *inValues, const float *outValues,
34c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams                              uint32_t valueCount, RsAnimationInterpolation,
35c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams                              RsAnimationEdge pre, RsAnimationEdge post);
36c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
37c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    float eval(float) const;
38b825f67adb5d1e1751fe108e6dbf9c6f2555c283Alex Sakhartchouk
39e3150cfb3edb028407669e4a65e087eae77e718cJason Sams    virtual void serialize(Context *rsc, OStream *stream) const;
40b825f67adb5d1e1751fe108e6dbf9c6f2555c283Alex Sakhartchouk    virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_ANIMATION; }
41fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk    static Animation *createFromStream(Context *rsc, IStream *stream);
42c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
43c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Samsprotected:
44c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    Animation(Context *rsc);
45c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
46c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
47c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
48c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    float evalInRange(float) const;
49c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
50c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
51c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
52c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    const float *mValuesInput;
53c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    const float *mValuesOutput;
54c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    uint32_t mValueCount;
55c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    RsAnimationInterpolation mInterpolation;
56c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    RsAnimationEdge mEdgePre;
57c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    RsAnimationEdge mEdgePost;
58c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
59c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    // derived
60c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    float mInputMin;
61c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams    float mInputMax;
62c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams};
63c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
64c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams}
65c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams}
66c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams#endif //ANDROID_STRUCTURED_ELEMENT_H
67c1ed589021e280cda59a0521cb96b3e9eb629e1bJason Sams
68