| // | |
| // Copyright (c) 2002-2016 The ANGLE Project Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // | |
| // Path.h: Defines the gl::Path class, representing CHROMIUM_path_rendering | |
| // path object. | |
| #include "libANGLE/Path.h" | |
| #include "libANGLE/renderer/PathImpl.h" | |
| #include "common/mathutil.h" | |
| #include "common/debug.h" | |
| namespace gl | |
| { | |
| Path::Path(rx::PathImpl *impl) | |
| : mPath(impl), | |
| mHasData(false), | |
| mEndCaps(GL_FLAT_CHROMIUM), | |
| mJoinStyle(GL_MITER_REVERT_CHROMIUM), | |
| mStrokeWidth(1.0f), | |
| mStrokeBound(0.2f), | |
| mMiterLimit(4.0f) | |
| { | |
| } | |
| Path::~Path() | |
| { | |
| delete mPath; | |
| } | |
| Error Path::setCommands(GLsizei numCommands, | |
| const GLubyte *commands, | |
| GLsizei numCoords, | |
| GLenum coordType, | |
| const void *coords) | |
| { | |
| ANGLE_TRY(mPath->setCommands(numCommands, commands, numCoords, coordType, coords)); | |
| mHasData = true; | |
| return NoError(); | |
| } | |
| void Path::setStrokeWidth(GLfloat width) | |
| { | |
| mStrokeWidth = width; | |
| mPath->setPathParameter(GL_PATH_STROKE_WIDTH_CHROMIUM, mStrokeWidth); | |
| } | |
| void Path::setStrokeBound(GLfloat bound) | |
| { | |
| mStrokeBound = clamp(bound, 0.0f, 1.0f); | |
| mPath->setPathParameter(GL_PATH_STROKE_BOUND_CHROMIUM, mStrokeBound); | |
| } | |
| void Path::setEndCaps(GLenum type) | |
| { | |
| mEndCaps = type; | |
| mPath->setPathParameter(GL_PATH_END_CAPS_CHROMIUM, static_cast<GLfloat>(type)); | |
| } | |
| void Path::setJoinStyle(GLenum type) | |
| { | |
| mJoinStyle = type; | |
| mPath->setPathParameter(GL_PATH_JOIN_STYLE_CHROMIUM, static_cast<GLfloat>(type)); | |
| } | |
| void Path::setMiterLimit(GLfloat value) | |
| { | |
| mMiterLimit = value; | |
| mPath->setPathParameter(GL_PATH_MITER_LIMIT_CHROMIUM, value); | |
| } | |
| } // gl |