buildSrc/src/main/java/com/sun/scenario/effect/compiler/backend/sw/sse/SSEBackend.java

Print this page

        

@@ -92,13 +92,15 @@
         return sortedVars;
     }
 
     public final GenCode getGenCode(String effectName,
                                     String peerName,
+                                    String genericsName,
                                     String interfaceName)
     {
         Map<String, Variable> vars = parser.getSymbolTable().getGlobalVariables();
+        StringBuilder genericsDecl = new StringBuilder();
         StringBuilder interfaceDecl = new StringBuilder();
         StringBuilder constants = new StringBuilder();
         StringBuilder samplers = new StringBuilder();
         StringBuilder cleanup = new StringBuilder();
         StringBuilder srcRects = new StringBuilder();

@@ -307,19 +309,24 @@
                 cparamDecls.append("jfloat src" + i + "Rect_x2, jfloat src" + i + "Rect_y2,\n");
                 cparamDecls.append("jint src" + i + "w, jint src" + i + "h, jint src" + i + "scan");
             }
         }
 
+        if (genericsName != null) {
+            genericsDecl.append("<"+genericsName+">");
+        }
+
         if (interfaceName != null) {
             interfaceDecl.append("implements "+interfaceName);
         }
 
         Reader template = new InputStreamReader(getClass().getResourceAsStream("SSEJavaGlue.stg"));
         StringTemplateGroup group = new StringTemplateGroup(template, DefaultTemplateLexer.class);
         StringTemplate jglue = group.getInstanceOf("glue");
         jglue.setAttribute("effectName", effectName);
         jglue.setAttribute("peerName", peerName);
+        jglue.setAttribute("genericsDecl", genericsDecl.toString());
         jglue.setAttribute("interfaceDecl", interfaceDecl.toString());
         jglue.setAttribute("usercode", usercode.toString());
         jglue.setAttribute("samplers", samplers.toString());
         jglue.setAttribute("cleanup", cleanup.toString());
         jglue.setAttribute("srcRects", srcRects.toString());