예제 #1
0
WlzErrorNum HGU_XmFileListWriteResourceFile(
  AlcDLPList	*fileList,
  String	resourceFile)
{
  WlzErrorNum	errNum=WLZ_ERR_NONE;
  AlcDLPItem	*item;
  HGU_XmFileListCallbackStruct	*cbs;
  FILE		*fp;

  /* check inputs */
  if( (fileList == NULL) || (resourceFile == NULL) ){
    errNum = WLZ_ERR_PARAM_NULL;
  }

  /* open the file */
  if( errNum == WLZ_ERR_NONE ){

    /* currently assume only these entries are written to the
       resource file */
    if( (fp = fopen(resourceFile, "w")) ){
      /* write a file header */
      HGU_XmFileListWriteHeader(fp);
      item = fileList->head;
      while( item ){
	cbs = (HGU_XmFileListCallbackStruct *) item->entry;
	WlzEffBibWriteFileRecord(fp, "HGU_XmFileListFileRecord",
				 cbs->file, cbs->format);
	item = item->next;
	if( item == fileList->head ){
	  item = NULL;
	}
      }
      fclose( fp );
    }
    else {
      errNum = WLZ_ERR_FILE_OPEN;
    }
  }

  return errNum;
}
/*!
* - Function:   WlzEffWriteMeshTransform3DWithoutDisplacementVTK
* - Returns:    none 
* - Purpose:    output the orginal mesh.	
* - Parameters:	
*     -# *fp:               pointer pointing to a specific file.
*     -#  wmt3D:            mesh transform.
* - Author:       J. Rao, R. Baldock and B. Hill
*/
static WlzErrorNum WriteBibFile(FILE *outFile, char *outFileStr,  char *inFileStrw, char *inFileStrSec,WlzThreeDViewStruct  *wlzViewStr)
{
   WlzErrorNum	    errNum = WLZ_ERR_NONE;
   BibFileRecord	*bibfileRecord;
   /* BibFileError      bibFileErr; */
   /* char             *errMsg; */
   char             *tmpS,
                    *dateS = NULL,
		    *hostS = NULL,
                    *userS = NULL,
                    *refFileS = NULL,
     *srcFileS; /*,     sgnlFileS; */
   time_t		tmpTime;   
   char			tmpBuf[256];
   static char		unknownS[] = "unknown";
   /* WlzBasisFnType     bt = WLZ_BASISFN_MQ; */
   WlzFnType          bt = WLZ_FN_BASIS_3DMQ;

   WlzTransformType   at = WLZ_TRANSFORM_2D_NOSHEAR;
   WlzMeshGenMethod     wmgmd  = WLZ_MESH_GENMETHOD_GRADIENT;
   WlzEffFormat    weft =  WLZEFF_FORMAT_WLZ;
   /* WlzObjectType    wtp =    WLZ_2D_DOMAINOBJ; */
   if((outFile = fopen(outFileStr, "w")) == NULL )
   {
       printf("cannot open the output bib file.\n");
       exit(1);
   }
   /* write some sort of identifier */
      bibfileRecord = 
	BibFileRecordMake("Ident", "0",
			  BibFileFieldMakeVa("Text",
					     "MAPaint 2D warp input parameters",
					     "Version",	"1",
					     NULL));
      BibFileRecordWrite(outFile, NULL, bibfileRecord);
      BibFileRecordFree(&bibfileRecord);


   /* now a comment with user, machine, date etc. */
      tmpS = getenv("USER");
      (void )sprintf(tmpBuf, "User: %s", tmpS?tmpS:unknownS);
      userS = AlcStrDup(tmpBuf);

      tmpTime = time(NULL);
      tmpS = ctime(&tmpTime);
      *(tmpS + strlen(tmpS) - 1) = '\0';
      (void )sprintf(tmpBuf, "Date: %s", tmpS?tmpS:unknownS);
      dateS = AlcStrDup(tmpBuf);

      tmpS = getenv("HOST");
      (void )sprintf(tmpBuf, "Host: %s", tmpS?tmpS:unknownS);
      hostS = AlcStrDup(tmpBuf);

      (void )sprintf(tmpBuf, "RefFile: %s", "WlzFileName");
      refFileS = AlcStrDup(tmpBuf);

      (void )sprintf(tmpBuf, "SrcFile: %s",outFileStr );
      srcFileS = AlcStrDup(tmpBuf);

      bibfileRecord = 
	BibFileRecordMake("Comment", "0",
			  BibFileFieldMakeVa("Text", userS,
					     "Text", dateS,
					     "Text", hostS,
					     "Text", refFileS,
					     "Text", srcFileS,
					     "Text", "no need",
					     NULL));
      BibFileRecordWrite(outFile, NULL, bibfileRecord);
      BibFileRecordFree(&bibfileRecord);

       /* if write a file record for the reference file */
      if( inFileStrw ){
	WlzEffBibWriteFileRecord(outFile, "MAPaintReferenceFile",
			 inFileStrw,
			  weft);
      }

      /* if defined write a file record for the source */
      if( inFileStrSec ){
	WlzEffBibWriteFileRecord(outFile, "MAPaintWarpInputSourceFile",
			  inFileStrSec,
			  weft);
      }

      /* write the section data */
      if( WlzEffBibWrite3DSectionViewParamsRecord(outFile, "Wlz3DSectionViewParams", 
					      wlzViewStr) != WLZ_ERR_NONE ){
	printf(
			"Save Warp Parameters:\n"
			"    Error in writing the bibfile\n"
			"    Please check disk space or quotas\n"
			"    Section parameters not saved"
			);
      }

      /* write the warp transform parameters */
       if( WlzEffBibWriteWarpTransformParamsRecord(outFile, "WlzWarpTransformParams",
					      bt,
					      at,
					      wmgmd,
					      20,
					      40)
     	 != WLZ_ERR_NONE ){
     	printf(
			"Save Warp Parameters:\n"
			"    Error in writing the bibfile\n"
			"    Please check disk space or quotas\n"
			"    Section parameters not saved"
			);
      }

    /* write the warp transform parameters */
   /*
   if( WlzEffBibWrite3DSectionViewParamsRecord(outFile, outFileStr, 
					      wlzViewStr) != WLZ_ERR_NONE ) {
		printf("can not output:");	
		exit(0);
					      
   }
   */
   fclose(outFile);
   outFile = NULL;
   return errNum;
}
예제 #3
0
/*!
* \return	Woolz error code.
* \brief	Outputs a section parameters file with the reference and source
* 		file object file names, the 3D view transform and the
*		tie-points.
* \param	fP			Output section parameters file.
* \param	view			3D view transform.
* \param	refObjFileStr		Reference object file name.
* \param	refObjFileType		Reference object file type.
* \param	srcObjFileStr		Source object file name.
* \param	srcObjFileType		Source object file type.
* \param	nMatch			Number of tie-points.
* \param	tieRP			Reference object tie-points.
* \param	tieSP			Source object tie-points.
* \param	refObj2DOrg		Origin of the 2D reference object to
*					be subtracted if non NULL.
*/
static WlzErrorNum WlzMatchICPPlaneWriteSecParam(FILE *fP,
			      WlzThreeDViewStruct *view,
			      char *refObjFileStr, WlzEffFormat refObjFileType,
			      char *srcObjFileStr, WlzEffFormat srcObjFileType,
			      int nMatch,
			      WlzDVertex2 *tieRP, WlzDVertex2 *tieSP,
			      WlzDVertex2 *refObj2DOrg)
{
  int		idx;
  char		*tmpS,
		*dateS = NULL,
		*hostS = NULL,
		*userS = NULL,
		*refFileS = NULL,
		*srcFileS = NULL,
		*sgnlFileS = NULL;
  time_t	tmpTime;
  BibFileRecord	*bibRec;
  WlzDVertex3	refVx,
  		srcVx;
  char		tmpBufS[256];
  static char	unknownS[] = "unknown";
  WlzErrorNum	errNum = WLZ_ERR_NONE;

  if((bibRec = BibFileRecordMake("Ident", "0",
  			     BibFileFieldMakeVa("Text",
					"MAPaint 2D warp input parameters",
					"Version", "1",
					NULL))) == NULL)
  {
    errNum = WLZ_ERR_MEM_ALLOC;
  }
  /* Comment with user, machine, date etc. */
  if(errNum == WLZ_ERR_NONE)
  {
    if(BibFileRecordWrite(fP, NULL, bibRec) != BIBFILE_ER_NONE)
    {
      errNum = WLZ_ERR_WRITE_EOF;
    }
    BibFileRecordFree(&bibRec);
  }
  if(errNum == WLZ_ERR_NONE)
  {
    tmpS = getenv("USER");
    (void )sprintf(tmpBufS, "User: %s", tmpS? tmpS: unknownS);
    if((userS = AlcStrDup(tmpBufS)) == NULL)
    {
      errNum = WLZ_ERR_MEM_ALLOC;
    }
  }
  if(errNum == WLZ_ERR_NONE)
  {
    tmpTime = time(NULL);
    tmpS = ctime(&tmpTime);
    *(tmpS + strlen(tmpS) - 1) = '\0';
    (void )sprintf(tmpBufS, "Date: %s", tmpS? tmpS: unknownS);
    if((dateS = AlcStrDup(tmpBufS)) == NULL)
    {
      errNum = WLZ_ERR_MEM_ALLOC;
    }
  }
  if(errNum == WLZ_ERR_NONE)
  {
    tmpS = getenv("HOST");
    (void )sprintf(tmpBufS, "Host: %s", tmpS? tmpS: unknownS);
    hostS = AlcStrDup(tmpBufS);
  }
  if(errNum == WLZ_ERR_NONE)
  {
    (void )sprintf(tmpBufS, "RefFile: %s", refObjFileStr);
    refFileS = AlcStrDup(tmpBufS);
  }
  if(errNum == WLZ_ERR_NONE)
  {
    (void )sprintf(tmpBufS, "SrcFile: %s", srcObjFileStr);
    srcFileS = AlcStrDup(tmpBufS);
  }
  if(errNum == WLZ_ERR_NONE)
  {
    (void )sprintf(tmpBufS, "SignalFile: %s", unknownS);
    sgnlFileS = AlcStrDup(tmpBufS);
  }
  if(errNum == WLZ_ERR_NONE)
  {
    if((bibRec = BibFileRecordMake("Comment", "0",
			     BibFileFieldMakeVa("Text", userS,
					        "Text", dateS,
					        "Text", hostS,
					        "Text", refFileS,
					        "Text", srcFileS,
					        "Text", sgnlFileS,
					        NULL))) == NULL)
    {
      errNum = WLZ_ERR_MEM_ALLOC;
    }
  }
  AlcFree(dateS);
  AlcFree(hostS);
  AlcFree(userS);
  AlcFree(refFileS);
  AlcFree(srcFileS);
  AlcFree(sgnlFileS);
  if(errNum == WLZ_ERR_NONE)
  {
    if(BibFileRecordWrite(fP, NULL, bibRec) != BIBFILE_ER_NONE)
    {
      errNum = WLZ_ERR_WRITE_INCOMPLETE;
    }
    BibFileRecordFree(&bibRec);
  }
  /* Source file string. */
  if(errNum == WLZ_ERR_NONE)
  {
    errNum = WlzEffBibWriteFileRecord(fP, "MAPaintWarpInputSourceFile",
				      srcObjFileStr, srcObjFileType);
  }
  /* Reference file string. */
  if(errNum == WLZ_ERR_NONE)
  {
    errNum = WlzEffBibWriteFileRecord(fP, "MAPaintWarpInputReferenceFile",
				      refObjFileStr, refObjFileType);
  }
  /* View parameters. */
  if(errNum == WLZ_ERR_NONE)
  {
    WlzEffBibWrite3DSectionViewParamsRecord(fP, "Wlz3DSectionViewParams",
					    view);
    
  }
  /* Tie points. */
  idx = 0;
  refVx.vtZ = 0.0;
  srcVx.vtZ = 0.0;
  while((errNum == WLZ_ERR_NONE) && (idx < nMatch))
  {
    refVx.vtX = (tieRP + idx)->vtX - view->fixed.vtX;
    refVx.vtY = (tieRP + idx)->vtY - view->fixed.vtY;
    if(refObj2DOrg)
    {
      refVx.vtX -= refObj2DOrg->vtX;
      refVx.vtY -= refObj2DOrg->vtY;
    }
    srcVx.vtX = (tieSP + idx)->vtX;
    srcVx.vtY = (tieSP + idx)->vtY;
    if(errNum == WLZ_ERR_NONE)
    {
      errNum = WlzEffBibWriteTiePointVtxsRecord(fP, "WlzTiePointVtxs", idx,
	  refVx, srcVx, 0);
    }
    ++idx;
  }
  return(errNum);
}