-class GlxProto(gl_XML.FilterGLAPISpecBase):
- name = "glX_proto_send.py (from Mesa)"
-
- def __init__(self):
- gl_XML.FilterGLAPISpecBase.__init__(self)
- self.factory = glXItemFactory()
- self.glx_enum_functions = {}
-
-
- def endElementNS(self, name, qname):
- [uri, true_name] = name
- if true_name == 'OpenGLAPI':
- # Once all the parsing is done, we have to go back and
- # fix-up some cross references between different
- # functions.
-
- for k in self.functions:
- f = self.functions[k]
- if f.vectorequiv != None:
- equiv = self.find_function(f.vectorequiv)
- if equiv != None:
- f.glx_doubles_in_order = equiv.glx_doubles_in_order
- f.glx_rop = equiv.glx_rop
- else:
- raise RuntimeError("Could not find the vector equiv. function %s for %s!" % (f.name, f.vectorequiv))
- else:
- gl_XML.FilterGLAPISpecBase.endElementNS(self, name, qname)
- return
-
-
- def createEnumFunction(self, n):
- return glXEnumFunction(n, self)
-
-
- def functionIterator(self):
- return glXFunctionIterator(self)
-
-
- def size_call(self, func):
- """Create C code to calculate 'compsize'.
-
- Creates code to calculate 'compsize'. If the function does
- not need 'compsize' to be calculated, None will be
- returned."""
-
- if not func.image and not func.count_parameter_list:
- return None
-
- if not func.image:
- parameters = string.join( func.count_parameter_list, "," )
- compsize = "__gl%s_size(%s)" % (func.name, parameters)
- else:
- [dim, w, h, d, junk] = func.dimensions()
-
- compsize = '__glImageSize(%s, %s, %s, %s, %s, %s)' % (w, h, d, func.image.img_format, func.image.img_type, func.image.img_target)
- if not func.image.img_send_null:
- compsize = '(%s != NULL) ? %s : 0' % (func.image.name, compsize)