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#include "rsContext.h" 184edf030cbb7c6ac08dc563335c2af73c20f6e2e5Alex Sakhartchouk#include "rs.h" 199e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 209e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsusing namespace android; 219e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsusing namespace android::renderscript; 229e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 239e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 249e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason SamsPath::Path(Context *rsc) : ObjectBase(rsc) { 259e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 269e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 279e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason SamsPath::Path(Context *rsc, RsPathPrimitive pp, bool isStatic, 289e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams Allocation *vtx, Allocation *loops, float quality) 299e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams: ObjectBase(rsc) { 309e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 319e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams memset(&mHal, 0, sizeof(mHal)); 329e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams mHal.state.quality = quality; 339e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams mHal.state.primitive = pp; 349e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 35028f20a6e5e883b7308298273b9aa517e5c890f5Jason Sams //LOGE("i1"); 369e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams rsc->mHal.funcs.path.initStatic(rsc, this, vtx, loops); 379e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 38028f20a6e5e883b7308298273b9aa517e5c890f5Jason Sams //LOGE("i2"); 399e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 409e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 419e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason SamsPath::Path(Context *rsc, uint32_t vertexBuffersCount, uint32_t primitivesCount) 429e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams: ObjectBase(rsc) { 439e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 449e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 459e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 469e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason SamsPath::~Path() { 479e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 489e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 499e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 509e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 519e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsvoid Path::rasterize(const BezierSegment_t *s, uint32_t num, Allocation *alloc) { 529e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 539e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams for (uint32_t i=0; i < num; i++) { 549e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 559e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams } 569e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 579e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 589e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 599e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsvoid Path::render(Context *rsc) { 609e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 619e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 62e3150cfb3edb028407669e4a65e087eae77e718cJason Samsvoid Path::serialize(Context *rsc, OStream *stream) const { 639e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 649e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 659e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 669e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason SamsRsA3DClassID Path::getClassId() const { 679e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams return RS_A3D_CLASS_ID_UNKNOWN; 689e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 699e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 709e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsnamespace android { 719e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsnamespace renderscript { 729e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 739e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason SamsRsPath rsi_PathCreate(Context *rsc, RsPathPrimitive pp, bool isStatic, 749e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams RsAllocation vtx, RsAllocation loops, float quality) { 759e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams return new Path(rsc, pp, isStatic, (Allocation *)vtx, (Allocation *)loops, quality); 769e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 779e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 789e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 799e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 80