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