コード例 #1
0
ファイル: genSvgElement.py プロジェクト: CaptEmulation/svgl
   if(node.getNodeType() ==  DOM_Node::TEXT_NODE) {
     svg::SVGPCDATAElement *elem = new svg::SVGPCDATAElement;
     elem->content = node.getNodeValue();
     return elem;
   } else
'''

strdef_output=''

for element_dtd_name in all_elements:
#    if element=='mpath':
#        continue
    classname = string.upper(element_dtd_name[0])+element_dtd_name[1:]
    classname = make_cppname(classname)
    #name=classname
    element_cpp_name = make_cpp_string_name(element_dtd_name)
    includes = includes + '#include <w3c/svg/SVG%sElement.hpp>\n'%(classname)
    
    output = output + '''
   if (nodeName==svg::%s_element_string) {
      svg::SVG%sElement *elem = new svg::SVG%sElement;
      elem->parse(node, owner, viewport);
      return elem;
   } else
'''%(element_cpp_name, classname, classname)

    strdef_output = strdef_output + 'STRDEF(%s,"%s")\n'%(classname, element_dtd_name)

output = output +'''
   {
      std::cerr << "element " << nodeName.c_str() << " (type " << node.getNodeType() << ") unknown" << std::endl;
コード例 #2
0
                        raise
                c, e = find_enum_in_inherit(entity_type.enums, classdecl)
                if entity_type.name == "xml:space":
                    # print classdecl.name, entity_type
                    # print e
                    pass

                if c != None and e != None:
                    # if c.name == "SVGComponentTransferFunctionElement":
                    #    print name, entity_type
                    # print c.name
                    # print e

                    i = entity_type.name
                    # print entity_type.name, e.name
                    iname = make_cpp_string_name(i)
                    if (iname, i) not in attr_strings:
                        attr_strings.append((iname, i))

                    if c.name + e.name in already_done:
                        continue

                    already_done.append(c.name + e.name)

                    if c.name not in includes:
                        includes.append(c.name)

                    output_cpp_read = (
                        output_cpp_read
                        + """
svg::%s::%s
コード例 #3
0
ファイル: genSvgElement.py プロジェクト: woodywu/svgl
   if(node.getNodeType() ==  DOM_Node::TEXT_NODE) {
     svg::SVGPCDATAElement *elem = new svg::SVGPCDATAElement;
     elem->content = node.getNodeValue();
     return elem;
   } else
'''

strdef_output = ''

for element_dtd_name in all_elements:
    #    if element=='mpath':
    #        continue
    classname = string.upper(element_dtd_name[0]) + element_dtd_name[1:]
    classname = make_cppname(classname)
    #name=classname
    element_cpp_name = make_cpp_string_name(element_dtd_name)
    includes = includes + '#include <w3c/svg/SVG%sElement.hpp>\n' % (classname)

    output = output + '''
   if (nodeName==svg::%s_element_string) {
      svg::SVG%sElement *elem = new svg::SVG%sElement;
      elem->parse(node, owner, viewport);
      return elem;
   } else
''' % (element_cpp_name, classname, classname)

    strdef_output = strdef_output + 'STRDEF(%s,"%s")\n' % (classname,
                                                           element_dtd_name)

output = output + '''
   {
コード例 #4
0
ファイル: genAttributeParser.py プロジェクト: woodywu/svgl
                        raise
                c, e = find_enum_in_inherit(entity_type.enums, classdecl)
                if entity_type.name == 'xml:space':
                    #print classdecl.name, entity_type
                    #print e
                    pass

                if c != None and e != None:
                    #if c.name == "SVGComponentTransferFunctionElement":
                    #    print name, entity_type
                    #print c.name
                    #print e

                    i = entity_type.name
                    #print entity_type.name, e.name
                    iname = make_cpp_string_name(i)
                    if (iname, i) not in attr_strings:
                        attr_strings.append((iname, i))

                    if c.name + e.name in already_done:
                        continue

                    already_done.append(c.name + e.name)

                    if c.name not in includes:
                        includes.append(c.name)

                    output_cpp_read = output_cpp_read + """
svg::%s::%s
make_%s(const svg::String& s)
{
コード例 #5
0
ファイル: makeParseAttribute.py プロジェクト: woodywu/svgl
def process(classdecl):

    if classdecl.name in includes:
        raise AlreadyProcessed

    if classdecl in already_done:
        return 0;
    already_done.append(classdecl)

    nattr=0

    begin_string = '''
// %s
    
int
%s::parse_attributes(const String& attrName, const String& attrValue)
{
  int recognized=0;
//  std::cerr << "%s::parse" << std::endl;
  {
'''%(classdecl.name, classdecl.name, classdecl.name)

    begin_print_string = '''
// %s
    
void
%s::print_attributes(xmlostream& out)
{
'''%(classdecl.name, classdecl.name)

    begin_get_attr_by_name_string = '''
// %s
    
svgl::AnimateAdapter*
%s::getAttributeByName(const String& attrName)
{
//  std::cerr << "%s::getAttributeByName " << attrName << std::endl;

'''%(classdecl.name, classdecl.name, classdecl.name)


    for attr in classdecl.attributes:
        try:
            entity_name = mapDtdIdl.attributes_idl_dtd[attr]
        except KeyError:
            #print classdecl.name, attr
            #print classdecl
            #print mapDtdIdl.attributes_idl_dtd
            #raise ""
            continue

        if nattr==0:
            includes.append(classdecl.name)
            output_cpp = begin_string
            print_output_cpp = begin_print_string + '   out '
            output_get_attr_by_name = begin_get_attr_by_name_string

        nattr=nattr+1
        output_cpp = output_cpp + '''
    if (*attrName==*%s_attribute_string) {
      *attrValue >> %s;
      ++recognized;
    } else
'''%(make_cpp_string_name(entity_name), make_cpp(attr.name))

        print_output_cpp = print_output_cpp + '''<< " %s=\\"" << %s << "\\"" '''%(entity_name, make_cpp(attr.name))

        (typename, ispointer)=mapAttributeType.mapAttributeType(classdecl, attr)

        output_get_attr_by_name = output_get_attr_by_name + '''
    if (*attrName==*%s_attribute_string) {
      return new svgl::AnimateAdapterTemplate< Attribute< %s > >(&%s);
    } else
'''%(make_cpp_string_name(entity_name), typename, make_cpp(attr.name))

    if nattr>0:
        print_output_cpp = print_output_cpp + ' ;\n'

    resDeclared = 0
    for inh in classdecl.inherits:
        try:
            res = process(parse_idl.class_decls[inh])
        except AlreadyProcessed:
            res=1
        except KeyError:
            if inh not in ["Element", "events::EventTarget", "events::DocumentEvent", "css::ViewCSS", "css::DocumentCSS",
                           "css::CSSValue", "smil::ElementTimeControl", "Document", "events::UIEvent", "css::CSSRule",
                           "events::Event"]:
                raise
            else:
                continue
        if res>0:
            if nattr==0:
                includes.append(classdecl.name)
                output_cpp = begin_string
                print_output_cpp = begin_print_string

                output_get_attr_by_name = begin_get_attr_by_name_string

            if resDeclared==0:
                output_get_attr_by_name = output_get_attr_by_name + '''
    {
       svgl::AnimateAdapter* res = 0;
'''
                resDeclared=1


            nattr = nattr+res
            output_cpp = output_cpp + '''
    if (%s::parse_attributes(attrName, attrValue)) {
      ++recognized;
    } else
'''%(inh)
            print_output_cpp= print_output_cpp+'''   %s::print_attributes(out);\n'''%(inh)

            output_get_attr_by_name = output_get_attr_by_name + '''
       res = %s::getAttributeByName(attrName);
       if (res) {
         return res;
       }
'''%(inh)


    if nattr>0:
        if classdecl.name in customParser:
             #print classdecl.name
            output_cpp = output_cpp + '''
    if (customParseAttributes(attrName, attrValue)) {
      ++recognized;
    } else
'''

        #if it's an element
        #if string.find(classdecl.name,"Element")>0 and classdecl.name != "SVGElement":
        if mapDtdIdl.elements_idl_dtd.has_key(classdecl):
                
                

            output_cpp = output_cpp + '''
    {
      // std::cerr << "unknown attribute %s::" << attrName << std::endl;
    }
'''%(classdecl.name)
            output_get_attr_by_name = output_get_attr_by_name + '''
      {
         std::cerr << "unknown attribute %s::" << attrName << std::endl;
      }
'''%(classdecl.name)

        else:
            output_cpp = output_cpp +'''
    {
    }
'''

        output_cpp = output_cpp+'''
  }
  return recognized;
}      
'''

        if(resDeclared):
            output_get_attr_by_name = output_get_attr_by_name + '''
  }
'''        
        output_get_attr_by_name = output_get_attr_by_name + '''
  return 0;
}
'''

        print_output_cpp = print_output_cpp + '''}\n'''
        
        output_cpps[classdecl.name]=output_cpp
        print_output_cpps[classdecl.name]=print_output_cpp
        output_get_attr_by_names[classdecl.name]=output_get_attr_by_name

        #print classdecl.name, len(output_get_attr_by_name)

    else:
        #print classdecl
        pass

    
    return nattr