// // 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. #ifndef LIBANGLE_PATH_H_ #define LIBANGLE_PATH_H_ #include "angle_gl.h" #include "common/angleutils.h" #include "libANGLE/Error.h" #include "libANGLE/RefCountObject.h" namespace rx { class PathImpl; } namespace gl { class Path final : angle::NonCopyable { public: Path(rx::PathImpl *impl); ~Path(); Error setCommands(GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); void setStrokeWidth(GLfloat width); void setStrokeBound(GLfloat bound); void setEndCaps(GLenum type); void setJoinStyle(GLenum type); void setMiterLimit(GLfloat value); GLfloat getStrokeWidth() const { return mStrokeWidth; } GLfloat getStrokeBound() const { return mStrokeBound; } GLfloat getMiterLimit() const { return mMiterLimit; } GLenum getEndCaps() const { return mEndCaps; } GLenum getJoinStyle() const { return mJoinStyle; } bool hasPathData() const { return mHasData; } rx::PathImpl *getImplementation() const { return mPath; } private: rx::PathImpl *mPath; // a Path object is not actually considered "a path" // untill it has been specified with data. So we'll // keep this flag to support this semantics. bool mHasData; GLenum mEndCaps; GLenum mJoinStyle; GLfloat mStrokeWidth; GLfloat mStrokeBound; GLfloat mMiterLimit; }; } // namespace gl #endif // LIBANGLE_PATH_H_