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

Print this page

        

@@ -61,13 +61,15 @@
         this.body = scanner.getResult();
     }
     
     public final String 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();

@@ -207,19 +209,24 @@
                 posIncrX.append("pos" + i + "_x += inc" + i + "_x;\n");
                 posIncrY.append("pos" + i + "_y += inc" + i + "_y;\n");
             }
         }
         
+        if (genericsName != null) {
+            genericsDecl.append("<"+genericsName+">");
+        }
+
         if (interfaceName != null) {
             interfaceDecl.append("implements "+interfaceName);
         }
 
         Reader template = new InputStreamReader(getClass().getResourceAsStream("JSWGlue.stg"));
         StringTemplateGroup group = new StringTemplateGroup(template, DefaultTemplateLexer.class);
         StringTemplate glue = group.getInstanceOf("glue");
         glue.setAttribute("effectName", effectName);
         glue.setAttribute("peerName", peerName);
+        glue.setAttribute("genericsDecl", genericsDecl.toString());
         glue.setAttribute("interfaceDecl", interfaceDecl.toString());
         glue.setAttribute("usercode", usercode.toString());
         glue.setAttribute("samplers", samplers.toString());
         glue.setAttribute("cleanup", cleanup.toString());
         glue.setAttribute("srcRects", srcRects.toString());