home *** CD-ROM | disk | FTP | other *** search
/ gdead.berkeley.edu / gdead.berkeley.edu.tar / gdead.berkeley.edu / pub / cad-tools / ciftomann.tar / CD / gencif.c < prev    next >
C/C++ Source or Header  |  1988-01-28  |  4KB  |  190 lines

  1. /*
  2.  * gencif.c
  3.  *
  4.  * Copyright -C- 1981 Giles Billingsley
  5.  * sccsid "%W%  %G%"
  6.  *
  7.  *     KIC is a graphics editor that was developed by the integrated
  8.  * circuits group of the Electronics Research Laboratory and the
  9.  * Department of Electrical Engineering and Computer Sciences at
  10.  * the University of California, Berkeley, California.  The program
  11.  * KIC is available free of charge to any interested party.
  12.  * The sale, resale, or use of this program for profit without the
  13.  * express written consent of the Department of Electrical Engineering
  14.  * and Computer Sciences, University of California, Berkeley, California,
  15.  * is forbidden.
  16.  */
  17.  
  18.  
  19. /*
  20.  * CIF file generator.
  21.  * Here's an example.
  22.  * The following code
  23.  *     {
  24.  *     FileDesc = fopen("CIFFile","w");
  25.  *     GenBeginSymbol(FileDesc,3,1,1);
  26.  *     GenComment(FileDesc,"This is easy.");
  27.  *     GenBox(FileDesc,1,2,3,4,1,0);
  28.  *     GenEndSymbol(FileDesc);
  29.  *     GenEnd(FileDesc);
  30.  *     fclose(FileDesc; 
  31.  *     }
  32.  * 
  33.  * generates
  34.  * 
  35.  * DS 3 1 1;
  36.  * (This is easy.);
  37.  * B 1 2 3 4; 
  38.  * DF;
  39.  * E
  40.  * 
  41.  */
  42.  
  43. #include <stdio.h>
  44. #include "macros.h"
  45. #include "cd.h"
  46.  
  47. GenEnd(FileDesc)
  48.     FILE *FileDesc;
  49.     {
  50.     fprintf(FileDesc,"E\n");
  51.     }
  52.  
  53. GenBeginSymbol(FileDesc,SymbolNum,A,B)
  54.     FILE *FileDesc;
  55.     int SymbolNum,A,B;
  56.     {
  57.     fprintf(FileDesc,"DS %d %d %d;\n",SymbolNum,A,B);
  58.     }
  59.  
  60. GenEndSymbol(FileDesc)
  61.     FILE *FileDesc;
  62.     {
  63.     fprintf(FileDesc,"DF;\n");
  64.     }
  65.  
  66. GenBeginCall(FileDesc,Number)
  67.     FILE *FileDesc;
  68.     int Number;
  69.     {
  70.     fprintf(FileDesc,"C %d",Number);
  71.     }
  72.  
  73. GenEndCall(FileDesc)
  74.     FILE *FileDesc;
  75.     {
  76.     fprintf(FileDesc,";\n");
  77.     }
  78.  
  79. GenTranslation(FileDesc,X,Y)
  80.     FILE *FileDesc;
  81.     int X,Y;
  82.     {
  83.     fprintf(FileDesc," T %d %d",X,Y);
  84.     }
  85.  
  86. GenRotation(FileDesc,X,Y)
  87.     FILE *FileDesc;
  88.     int X,Y;
  89.     {
  90.     fprintf(FileDesc," R %d %d",X,Y);
  91.     }
  92.  
  93. GenMirrorX(FileDesc)
  94.     FILE *FileDesc;
  95.     {
  96.     fprintf(FileDesc," MX");
  97.     }
  98.  
  99. GenMirrorY(FileDesc)
  100.     FILE *FileDesc;
  101.     {
  102.     fprintf(FileDesc," MY");
  103.     }
  104.  
  105. GenPolygon(FileDesc,Path)
  106.     FILE *FileDesc;
  107.     struct p *Path;
  108.     {
  109.     struct p *Pair;
  110.  
  111.     fprintf(FileDesc,"P");
  112.     Pair = Path;
  113.     while(Pair != NULL){
  114.     fprintf(FileDesc," %d %d",Pair->pX,Pair->pY);
  115.     Pair = Pair->pSucc;
  116.     }
  117.     fprintf(FileDesc,";\n");
  118.     }
  119.  
  120. GenWire(FileDesc,Width,Path)
  121.     FILE *FileDesc;
  122.     struct p *Path;
  123.     int Width;
  124.     {
  125.     struct p *Pair;
  126.  
  127.     fprintf(FileDesc,"W %d",Width);
  128.     Pair = Path;
  129.     while(Pair != NULL){
  130.     fprintf(FileDesc," %d %d",Pair->pX,Pair->pY);
  131.     Pair = Pair->pSucc;
  132.     }
  133.     fprintf(FileDesc,";\n");
  134.     }
  135.  
  136. GenBox(FileDesc,Length,Width,X,Y,XDir,YDir)
  137.     FILE *FileDesc;
  138.     int Length,Width,X,Y,XDir,YDir;
  139.     {
  140.     fprintf(FileDesc,"B %d %d %d %d",Length,Width,X,Y);
  141.     if(XDir != 1 Or YDir != 0)
  142.     fprintf(FileDesc," %d %d",XDir,YDir);
  143.     fprintf(FileDesc,";\n");
  144.     }
  145.  
  146. /*
  147.  * GenRoundFlash(FileDesc,Width,X,Y)
  148.  *     FILE *FileDesc;
  149.  *     int Width,X,Y;
  150.  *     {
  151.  *     fprintf(FileDesc,"R %d %d %d;\n",Width,X,Y);
  152.  *     }
  153.  */
  154.  
  155. GenLayer(FileDesc,Technology,Mask)
  156.     FILE *FileDesc;
  157.     char Technology,Mask[];
  158.     {
  159.     if(Technology != ' '){
  160.     fprintf(FileDesc,"L %c",Technology);
  161.     if(Mask[0] != ' '){
  162.         fprintf(FileDesc,"%c",Mask[0]);
  163.         if(Mask[1] != ' '){
  164.         fprintf(FileDesc,"%c",Mask[1]);
  165.         if(Mask[2] != ' ')
  166.             fprintf(FileDesc,"%c",Mask[2]);
  167.         } 
  168.         }
  169.     fprintf(FileDesc,";\n");
  170.     }
  171.     }
  172.  
  173. GenUserExtension(FileDesc,Digit,Text)
  174.     FILE *FileDesc;
  175.     char Digit;
  176.     char *Text;
  177.     {
  178.     if(Text[0] >= '0' And Text[0] <= '9')
  179.         fprintf(FileDesc,"%c%s;\n",Digit,Text);
  180.     else
  181.         fprintf(FileDesc,"%c %s;\n",Digit,Text);
  182.     }
  183.  
  184. GenComment(FileDesc,Text)
  185.     FILE *FileDesc;
  186.     char *Text;
  187.     {
  188.     fprintf(FileDesc,"(%s);\n",Text);
  189.     }
  190.