void DivNode::registerType() { string sChildArray[] = {"image", "div", "canvas", "words", "video", "camera", "panoimage", "sound", "line", "rect", "curve", "polyline", "polygon", "circle", "mesh"}; vector<string> sChildren = vectorFromCArray( sizeof(sChildArray) / sizeof(*sChildArray), sChildArray); NodeDefinition def = NodeDefinition("div", "areanode", Node::buildNode<DivNode>) .addChildren(sChildren) .addArg(Arg<bool>("crop", false, false, offsetof(DivNode, m_bCrop))) .addArg(Arg<UTF8String>("mediadir", "", false, offsetof(DivNode, m_sMediaDir))); NodeRegistry::get()->registerNodeType(def); }
void RectNode::registerType() { float texCoords[] = {0, 0.25f, 0.5f, 0.75f, 1}; NodeDefinition def = NodeDefinition("rect", "filledvectornode", Node::buildNode<RectNode>) .addArg(Arg<glm::vec2>("pos", glm::vec2(0,0), false, offsetof(RectNode, m_Rect.tl))) .addArg(Arg<glm::vec2>("size", glm::vec2(0,0))) .addArg(Arg<float>("angle", 0.0f, false, offsetof(RectNode, m_Angle))) .addArg(Arg<vector<float> >("texcoords", vectorFromCArray(5, texCoords), false, offsetof(RectNode, m_TexCoords))) ; NodeRegistry::get()->registerNodeType(def); }
NodeDefinition DivNode::createDefinition() { string sChildArray[] = {"image", "div", "canvas", "words", "video", "camera", "panoimage", "sound", "line", "rect", "curve", "polyline", "polygon", "circle", "mesh"}; vector<string> sChildren = vectorFromCArray( sizeof(sChildArray) / sizeof(*sChildArray), sChildArray); return NodeDefinition("div", Node::buildNode<DivNode>) .extendDefinition(AreaNode::createDefinition()) .addChildren(sChildren) .addArg(Arg<bool>("crop", false, false, offsetof(DivNode, m_bCrop))) .addArg(Arg<string>("elementoutlinecolor", "", false, offsetof(DivNode, m_sElementOutlineColor))) .addArg(Arg<UTF8String>("mediadir", "", false, offsetof(DivNode, m_sMediaDir))); }
void NodeRegistry::registerNodeType(const NodeDefinition& def, const char* pParentNames[]) { m_NodeDefs.insert(NodeDefMap::value_type(def.getName(), def)); if (pParentNames) { string sChildArray[1]; sChildArray[0] = def.getName(); vector<string> sChildren = vectorFromCArray(1, sChildArray); const char **ppCurParentName = pParentNames; while (*ppCurParentName) { NodeDefinition nodeDefinition = getNodeDef(*ppCurParentName); nodeDefinition.addChildren(sChildren); updateNodeDefinition(nodeDefinition); ++ppCurParentName; } } }
void TypeRegistry::registerType(const TypeDefinition& def, const char* pParentNames[]) { m_TypeDefs.insert(TypeDefMap::value_type(def.getName(), def)); if (pParentNames) { string sChildArray[1]; sChildArray[0] = def.getName(); vector<string> sChildren = vectorFromCArray(1, sChildArray); const char **ppCurParentName = pParentNames; while (*ppCurParentName) { TypeDefinition def = getTypeDef(*ppCurParentName); def.addChildren(sChildren); updateDefinition(def); ++ppCurParentName; } } }