Index: src/gpu/gl/GrGLPathProgramDataManager.cpp |
diff --git a/src/gpu/gl/GrGLPathProgramDataManager.cpp b/src/gpu/gl/GrGLPathProgramDataManager.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f165015a210cab559daf9a8992845df379ccf75a |
--- /dev/null |
+++ b/src/gpu/gl/GrGLPathProgramDataManager.cpp |
@@ -0,0 +1,48 @@ |
+ /* |
+ * Copyright 2015 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#include "gl/GrGLPathProgramDataManager.h" |
+#include "gl/GrGLPathRendering.h" |
+#include "gl/GrGLUniformHandle.h" |
+#include "gl/GrGLGpu.h" |
+#include "SkMatrix.h" |
+ |
+GrGLPathProgramDataManager::GrGLPathProgramDataManager( |
+ GrGLGpu* gpu, GrGLuint programID, const SeparableVaryingInfoArray& separableVaryings) |
+ : fGpu(gpu) |
+ , fProgramID(programID) { |
+ int count = separableVaryings.count(); |
+ fSeparableVaryings.push_back_n(count); |
+ for (int i = 0; i < count; i++) { |
+ SeparableVarying& separableVarying = fSeparableVaryings[i]; |
+ const SeparableVaryingInfo& builderSeparableVarying = separableVaryings[i]; |
+ SkASSERT(GrGLShaderVar::kNonArray == builderSeparableVarying.fVariable.getArrayCount() || |
+ builderSeparableVarying.fVariable.getArrayCount() > 0); |
+ SkDEBUGCODE( |
+ separableVarying.fArrayCount = builderSeparableVarying.fVariable.getArrayCount(); |
+ separableVarying.fType = builderSeparableVarying.fVariable.getType(); |
+ ); |
+ separableVarying.fLocation = builderSeparableVarying.fLocation; |
+ } |
+} |
+ |
+void GrGLPathProgramDataManager::setPathFragmentInputTransform(SeparableVaryingHandle u, |
+ int components, |
+ const SkMatrix& matrix) const { |
+ const SeparableVarying& fragmentInput = |
+ fSeparableVaryings[u.toProgramDataIndex()]; |
+ |
+ SkASSERT((components == 2 && fragmentInput.fType == kVec2f_GrSLType) || |
+ (components == 3 && fragmentInput.fType == kVec3f_GrSLType)); |
+ |
+ fGpu->glPathRendering()->setProgramPathFragmentInputTransform(fProgramID, |
+ fragmentInput.fLocation, |
+ GR_GL_OBJECT_LINEAR, |
+ components, |
+ matrix); |
+} |
+ |