コード例 #1
0
CXFA_Node* CXFA_FFWidgetHandler::CreateDraw(XFA_ELEMENT eElement,
                                            CXFA_Node* pParent,
                                            CXFA_Node* pBefore) const {
  CXFA_Node* pDraw = CreateFormItem(XFA_ELEMENT_Draw, pParent, pBefore);
  CreateValueNode(eElement, pDraw);
  return pDraw;
}
コード例 #2
0
ファイル: md32spr.cpp プロジェクト: crystalspace/CS
void MD32spr::WriteXMLMaterials(md3Model * model,
			csRef < iDocumentNode > &parent) 
{
  int i = 0, j = 0;
  for (i = 0; i < model->header->numMeshes; i++)
    for (j = 0; j < model->meshes[i].meshHeader->numSkins; j++) {
      csRef < iDocumentNode > child =
	parent->CreateNodeBefore(CS_NODE_ELEMENT, 0);
      child->SetValue("material");
      char *name = new char[strlen(model->meshes[i].skins[j].name) + 1];
      if(basename(model->meshes[i].skins[j].name, name) == 0)
	continue;
      child->SetAttribute("name", strcat(lowercase(name), ".mat"));
      char *tname = new char[strlen(model->meshes[i].skins[j].name) + 1];
      if(basename(model->meshes[i].skins[j].name, tname) == 0)
	continue;
      CreateValueNode(child, "texture", lowercase(tname));
    }
}
コード例 #3
0
CXFA_Node* CXFA_FFWidgetHandler::CreateDecimalField(CXFA_Node* pParent,
                                                    CXFA_Node* pBefore) const {
  CXFA_Node* pField = CreateNumericField(pParent, pBefore);
  CreateValueNode(XFA_ELEMENT_Decimal, pField);
  return pField;
}
コード例 #4
0
CXFA_Node* CXFA_FFWidgetHandler::CreateDatetimeEdit(CXFA_Node* pParent,
                                                    CXFA_Node* pBefore) const {
  CXFA_Node* pField = CreateField(XFA_ELEMENT_DateTimeEdit, pParent, pBefore);
  CreateValueNode(XFA_ELEMENT_Date, pField);
  return pField;
}
コード例 #5
0
ファイル: md32spr.cpp プロジェクト: crystalspace/CS
void MD32spr::WriteGeneric(md3Model * model,
			   csRef < iDocumentNode > &parent)
{
  int i = 0, j = 0, k = 0;
  csRef < iDocumentNode > localParent;

  localParent =
    parent->CreateNodeBefore(CS_NODE_ELEMENT, 0);
  localParent->SetValue("textures");

  if (model->header->numMeshes > 0) {
    WriteXMLTextures(model, localParent);
      
    localParent = parent->CreateNodeBefore(CS_NODE_ELEMENT, 0);
    localParent->SetValue("materials");
    WriteXMLMaterials(model, localParent);


    for (i = 0; i < model->header->numMeshes; i++) {
      localParent = parent->CreateNodeBefore(CS_NODE_ELEMENT, 0);
      localParent->SetValue("meshfact");
      localParent->SetAttribute("name", model->meshes[i].meshHeader->name);
      CreateValueNode(localParent, "plugin",
		      "crystalspace.mesh.loader.factory.sprite.3d");
      csRef < iDocumentNode > child =
	localParent->CreateNodeBefore(CS_NODE_ELEMENT, 0);
      child->SetValue("params");

      for (j = 0; j < model->meshes[i].meshHeader->numSkins; j++) {
	char *matName = new char[strlen(model->meshes[i].skins[j].name) + 1];
	if(basename(model->meshes[i].skins[j].name, matName) == 0)
	  continue;
	CreateValueNode(child, "material",
			strcat(matName, ".mat"));
      }

      csRef < iDocumentNode > frame;
      for (j = 0; j < model->meshes[i].meshHeader->numMeshFrames; j++) {
	csString fNum;
	int numVertices = model->meshes[i].meshHeader->numVertices;

	frame = child->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	frame->SetValue("frame");
	fNum.Format ("f%d", j);
	frame->SetAttribute("name", fNum);

	for (k = 0; k < model->meshes[i].meshHeader->numVertices; k++) {
	  float u, v, x, y, z;
	  csRef < iDocumentNode > texel =
	    frame->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  texel->SetValue("v");
	  x = model->meshes[i].vertices[j * numVertices + k].vec[0];
	  y = model->meshes[i].vertices[j * numVertices + k].vec[1];
	  z = model->meshes[i].vertices[j * numVertices + k].vec[2];
	  u = model->meshes[i].texCoords[k].texCoord[0];
	  v = model->meshes[i].texCoords[k].texCoord[1];
	  texel->SetAttributeAsFloat("x", x / scaleFactor);
	  texel->SetAttributeAsFloat("y", y / scaleFactor);
	  texel->SetAttributeAsFloat("z", z / scaleFactor);
	  texel->SetAttributeAsFloat("u", u);
	  texel->SetAttributeAsFloat("v", v);
	}
      }
      if((stristr(model->fileName.GetData(), "head") || 
	 stristr(model->fileName.GetData(), "upper") || 
	 stristr(model->fileName.GetData(), "lower")) && player) {
	// Write all the actions.
	for(j = 0; j < model->numActions; j++) {
	  if(model->numActions == 1) {
	    csRef < iDocumentNode > action =
	      child->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	    action->SetValue("action");
	    action->SetAttribute("name", "default");

	    for (k = 0; k < model->meshes[i].meshHeader->numMeshFrames; k++) 
	    {
	      csString fNum;
	      csRef < iDocumentNode > f =
		action->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	      fNum.Format ("f%d", k);
	      f->SetValue("f");
	      f->SetAttribute("name", fNum);
	      f->SetAttribute("delay", "1000");	/// 1000 is the default delay.
	    }
	  } else {
	    csRef < iDocumentNode > action =
	      child->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	    action->SetValue("action");
	    action->SetAttribute("name", model->animInfo[j].actionName);
	  
	    for(k = model->animInfo[j].startFrame; 
		k < (model->animInfo[j].startFrame + model->animInfo[j].numFrames); 
		k++) 
	    {
	      csString fNum;
	      csRef < iDocumentNode > f =
		action->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	      fNum.Format ("f%d", k);
	      f->SetValue("f");
	      f->SetAttribute("name", fNum);
	      float delay = (1.0f/(float)model->animInfo[j].fps) * 1000;
	      f->SetAttributeAsFloat("delay", delay);  
	    }
	  }
	}
      } else {
	csRef < iDocumentNode > action =
	  child->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	action->SetValue("action");
	action->SetAttribute("name", "default");

	for (j = 0; j < model->meshes[i].meshHeader->numMeshFrames; j++) 
	{
	  csString fNum;
	  csRef < iDocumentNode > f =
	    action->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  fNum.Format ("f%d", j);
	  f->SetValue("f");
	  f->SetAttribute("name", fNum);
	  f->SetAttribute("delay", "1000");	/// 1000 is the default delay.
	}
      }
      for (j = 0; j < model->meshes[i].meshHeader->numTriangles; j++) {
	csRef < iDocumentNode > triangles =
	  child->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	triangles->SetValue("t");
	triangles->SetAttributeAsInt("v1",
				     model->meshes[i].triangles[j].
				     triangle[2]);
	triangles->SetAttributeAsInt("v2",
				     model->meshes[i].triangles[j].
				     triangle[1]);
	triangles->SetAttributeAsInt("v3",
				     model->meshes[i].triangles[j].
				     triangle[0]);
      }
    }
    for (i = 0; i < model->header->numMeshes; i++) {
      localParent = parent->CreateNodeBefore(CS_NODE_ELEMENT, 0);
      localParent->SetValue("meshobj");
      char *name =
	new char[strlen(model->fileName.GetData()) +
		 strlen(model->meshes[i].meshHeader->name) + 1];
      basename(model->fileName.GetData(), name);
      localParent->SetAttribute("name",
				strcat(name,
				       model->meshes[i].meshHeader->name));
      CreateValueNode(localParent, "plugin",
		      "crystalspace.mesh.loader.sprite.3d");
      csRef < iDocumentNode > params =
	localParent->CreateNodeBefore(CS_NODE_ELEMENT, 0);
      params->SetValue("params");
      CreateValueNode(params, "factory",
		      model->meshes[i].meshHeader->name);
      CreateValueNode(params, "action", "default");
    }
  }
}