rsPath.h revision 9e0afb5a2b3e476c42a373e7cd89cef4a34f8195
19e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams/*
29e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * Copyright (C) 2011 The Android Open Source Project
39e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams *
49e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
59e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * you may not use this file except in compliance with the License.
69e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * You may obtain a copy of the License at
79e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams *
89e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
99e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams *
109e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * Unless required by applicable law or agreed to in writing, software
119e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
129e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * See the License for the specific language governing permissions and
149e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * limitations under the License.
159e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams */
169e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
179e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams#ifndef ANDROID_RS_PATH_H
189e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams#define ANDROID_RS_PATH_H
199e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
209e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
219e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams#include "RenderScript.h"
229e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
239e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams// ---------------------------------------------------------------------------
249e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsnamespace android {
259e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsnamespace renderscript {
269e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
279e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsclass Path : public ObjectBase {
289e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samspublic:
299e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    struct {
309e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams        mutable void * drv;
319e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
329e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams        struct State {
339e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams            RsPathPrimitive primitive;
349e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams            float quality;
359e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams        };
369e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams        State state;
379e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    } mHal;
389e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
399e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    Path(Context *);
409e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    Path(Context *, uint32_t vertexBuffersCount, uint32_t primitivesCount);
419e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    Path(Context *, RsPathPrimitive pp, bool isStatic, Allocation *vtx, Allocation *loop, float q);
429e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
439e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    ~Path();
449e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
459e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    void render(Context *);
469e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    virtual void serialize(OStream *stream) const;
479e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    virtual RsA3DClassID getClassId() const;
489e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
499e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsprivate:
509e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
519e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
529e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    typedef struct {
539e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams        float x[4];
549e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams        float y[4];
559e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    } BezierSegment_t;
569e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
579e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    bool subdivideCheck(const BezierSegment_t *s, float u1, float u2);
589e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
599e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    void rasterize(const BezierSegment_t *s, uint32_t num, Allocation *alloc);
609e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
619e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
629e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams};
639e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
649e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams}
659e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams}
669e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams#endif //ANDROID_RS_PATH_H
679e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
689e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
699e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
70