/* CEDDISP (CED) -- Chip Editor Display Functions */ /* CEDDISP (CED) -- Chipeditor-Bilddarstellungsfunktionen */ /* -- INTENDED FOR KEY-CALL USE -- */ /* // Copyright (c) 2001-2012 Oliver Bartels F+E, Muenchen // Author: Roman Ludwig // Changes History: // rl (120427) RELEASED FOR BAE V7.8. // rl (101019) RELEASED FOR BAE V7.6. // rl (091020) RELEASED FOR BAE V7.4. // rl (081014) RELEASED FOR BAE V7.2. // rl (080409) CHANGE: // Added color table name display. // rl (071029) RELEASED FOR BAE V7.0. // rl (060829) RELEASED FOR BAE V6.8. // rl (050906) RELEASED FOR BAE V6.6. // rl (040811) RELEASED FOR BAE V6.4. // rl (030910) RELEASED FOR BAE V6.2. // rl (030910) ENHANCEMENT: // Added message history function. // rl (021209) RELEASED FOR BAE V6.0. // rl (020618) RELEASED FOR BAE V5.4. // rl (010808) ORIGINAL CODING. DERIVED FROM GEDDISP.ULC. // // DESCRIPTION // // The ceddisp User Language program provides a series of // advanced Chip Editor display management functions. */ // Includes #include "baeparam.ulh" // User Language BAE param. access #include "pop.ulh" // User Language popup utilities #include "icd.ulh" // User Language IC Design utilities // Disable undo state request #pragma ULCALLERNOUNDO // Messages string UPRABORT = M_UPRABORT(); string REPPGRID = M("Platzierungsraster (0.05um; Winkel/Raster einhalten).", "Placement grid (0.05um; Grid/Angle locked)."); string REPRGRID = M("Routingraster (1um; Winkel/Raster einhalten).", "Routing grid (1um; Grid/Angle locked)."); string REPCDISPM = M("Koordinatenanzeige um.", "Coordinate display um."); string REPCDISPI = M("Koordinatenanzeige mil.", "Coordinate display mil."); string UPRFCT = M("Bildschirmfunktion selektieren!", "Select Display Function!"); string UPRFCT1 = M("&Platzierungsraster","&Placement Grid"); string UPRFCT2 = M("&Routingraster","&Routing Grid"); string UPRFCT3 = M("%Anzeige &um","%Display &um"); string UPRFCT4 = M("Anzeige &mil","Display &mil"); string UPRFCT5 = M("%Vorzugs&lage","%Preference &Layer"); string UPRFCT6 = M("%Laden &Zeichensatz","%Load &Font"); string UPRFCT7 = M("%Parameter Rep&ort","%Sh&ow Parameters"); string UPRFCT8 = M("%&Tastaturbelegung","%&Key Bindings"); string UPRFCT9 = M("%M&eldungshistorie","%M&essage History"); string UPRPREFLAY = M("Vorzugslage selektieren!", "Select Pick Preference Layer!"); string REPHDPAR00 = M("IC-Layout Parameter","IC Layout Parameters"); string REPHDPAR01 = M("===================","===================="); string REPDEFLIB = M("Standard-IC-Layoutbibliothek ..: '%s'", "Default IC Layout Library .....: '%s'"); string REPCURLIB = M("Aktuelle IC-Layoutbibliothek ..: '%s'", "Current IC Layout Library .....: '%s'"); string REPDEFELM = M("Standard-IC-Layoutelementname .: '%s'", "Default IC Layout Element Name : '%s'"); string REPFNTNAM = M("Zeichensatzname ...............: '%s'", "Font Name .....................: '%s'"); string REPFNTCNT = M("Anzahl Zeichen ................: %d", "Font Character Count ..........: %d"); string REPCOLTNAM = M("Farbpalettename ...............: '%s'", "Color Table Name ..............: '%s'"); string REPCOORDM = M("Koordinatenanzeige ............: %s", "Coordinate Display Mode .......: %s"); string REPPICKMODE = M("Elementpickmodus ..............: %s", "Element Pick Mode .............: %s"); string REPGRIDLK = M("Rasterfreigabe ................: %s", "Grid Lock .....................: %s"); string REPANGLLK = M("Winkelfreigabe ................: %s", "Angle Lock ....................: %s"); string REPINPUTX = M("Eingaberaster X ...............: %10.4f %s", "Input Grid X ..................: %10.4f %s"); string REPINPUTY = M("Eingaberaster Y ...............: %10.4f %s", "Input Grid Y ..................: %10.4f %s"); string REPDISPX = M("Hintergrundraster X ...........: %10.4f %s", "Display Grid X ................: %10.4f %s"); string REPDISPY = M("Hintergrundraster Y ...........: %10.4f %s", "Display Grid Y ................: %10.4f %s"); string REPCLPWDTH = M("Breitendarstellung ............: %10.4f %s", "Display Clipping Width ........: %10.4f %s"); string REPPWIDTHN = M("Standard Bahnbreite schmal ....: %10.4f %s", "Standard Path Width Narrow ....: %10.4f %s"); string REPPWIDTHW = M("Standard Bahnbreite breit .....: %10.4f %s", "Standard Path Width Wide ......: %10.4f %s"); string REPPPLAY = M("Vorzugslage ...................: %s", "Pick Preference Layer .........: %s"); string REPMINCON = M("Mincon-Funktion ...............: %s", "Mincon Function ...............: %s"); string REPECNLAY = M("Connectivity-Lagen ............:", "Connectivity Layers ...........:"); string REPLAYEN = M(" Lage %2d : %s"," Layer %2d : %s"); string ITMLOCK = M("gelockt","locked"); string ITMFREE = M("freigegeben","free"); string ITMPICKPREF = M("Vorzugslage","Edit Layer"); string ITMPICKLIST = M("Elementauswahl","Element Selection"); string ITMMINCON0 = M("Kein Mincon","Mincon off"); string ITMMINCON1 = M("Pins Horizontal","Pins Horizontal"); string ITMMINCON2 = M("Pins Vertikal","Pins Vertical"); string ITMMINCON3 = M("Pins H+V Summe","Pins H+V Sum"); string ITMMINCON4 = M("Pins Luftlinie","Pins Airline"); string ITMMINCON5 = M("Ecken Horizontal","Corners Horizontal"); string ITMMINCON6 = M("Ecken Vertikal","Corners Vertical"); string ITMMINCON7 = M("Ecken H+V Summe","Corners H+V Sum"); string ITMMINCON8 = M("Ecken Luftlinie","Corners Airline"); string ITMUNDEF = M("*** UNDEFINIERT ***","*** UNDEFINED ***"); // INI file parameter name definitions #define PAR_PLCGRID "PLCGRID_CED" // Placement grid #define PAR_PLCGRIDL "PLCGRIDL_CED" // Placement grid lock #define PAR_PLCANGL "PLCANGL_CED" // Placement angle lock #define PAR_PLCGRIDN "PLCGRIDN_CED" // Placement grid name #define PAR_ROUTGRID "ROUTGRID_CED" // Routing grid #define PAR_ROUTGRIDL "ROUTGRIDL_CED" // Routing grid lock #define PAR_ROUTANGL "ROUTANGL_CED" // Routing angle lock #define PAR_ROUTGRIDN "ROUTGRIDN_CED" // Routing grid name #define PAR_COLPREF "COLORPREF_CED" // Preference layer color #define PAR_COLNPREF "COLORNPREF_CED"// Non-preference layer color // Global constants #define UL_LOADFONT "loadfont" // ULP: Load Font #define UL_HLPKEYS "hlpkeys" // ULP: Online Help - Key Bindings #define PGRID 0.00000005 // Placement grid #define RGRID 0.000001 // Routing grid // Color and display items #define MINDISPITM (-11) // Min. display item number #define COLBLACK 0 // Black/no color int COLPREF = bae_iniintval(PAR_COLPREF,4); // Preference layer color int COLNPREF = bae_iniintval(PAR_COLNPREF,8); // Non-preference layer color string UNIT = bae_getcoorddisp() ? "[mil]" : "[um]"; // Unit designator // Main program void main() { STRINGS msgl /* Message list */; int msgn /* Message count */; // Select display function bae_promptdialog(UPRFCT); switch (bae_askmenu(10,UPRFCT1,UPRFCT2,UPRFCT3, UPRFCT4,UPRFCT5,UPRFCT6,UPRFCT7,UPRFCT8,UPRFCT9,UPRABORT)) { // Set placement grid case 0 : bae_setbackgrid(bae_inidblval(PAR_PLCGRID,PGRID), bae_inidblval(PAR_PLCGRID,PGRID)); bae_setinpgrid(bae_inidblval(PAR_PLCGRID,PGRID), bae_inidblval(PAR_PLCGRID,PGRID)); bae_setgridlock(bae_iniintval(PAR_PLCGRIDL,1)); bae_setanglelock(bae_iniintval(PAR_PLCANGL,1)); bae_prtdialog(bae_inistrval(PAR_PLCGRIDN,REPPGRID)); break; // Set routing grid case 1 : bae_setbackgrid(bae_inidblval(PAR_ROUTGRID,RGRID), bae_inidblval(PAR_ROUTGRID,RGRID)); bae_setinpgrid(bae_inidblval(PAR_ROUTGRID,RGRID), bae_inidblval(PAR_ROUTGRID,RGRID)); bae_setgridlock(bae_iniintval(PAR_ROUTGRIDL,1)); bae_setanglelock(bae_iniintval(PAR_ROUTANGL,1)); bae_prtdialog(bae_inistrval(PAR_ROUTGRIDN,REPRGRID)); break; // Set coordinate display mm case 2 : bae_setcoorddisp(0); bae_prtdialog(REPCDISPM); break; // Set coordinate display Inch case 3 : bae_setcoorddisp(1); bae_prtdialog(REPCDISPI); break; // Set preference layer case 4 : preflayer(); break; // Load font case 5 : runulprogexit(UL_LOADFONT); // Show parameters case 6 : showparameters(); break; // Display key bindings case 7 : runulprogexit(UL_HLPKEYS); // Display message history case 8 : for (msgn=0;msgn<50;msgn++) if (bae_getcmdbuf(-msgn-1,"",msgl[msgn])<0) break; // Display messages with popup menu bae_setintpar(16,3002); popupmenu(0,"",msgl,0,msgl,msgn, UINPOPABORT,0,-1,-1,msgn*2,100,0,""); break; // Abort default : error_abort(); } } void preflayer() /* // Set the pick preference layer with color */ { int preflay = ced_getpickpreflay() /* Pick preference layer number */; int i /* Loop control variable */; // Select the preference layer if (bae_promptdialog(UPRPREFLAY),ced_asklayer(preflay)) error_abort(); // Set the special display items and signal layers colors for (i=MINDISPITM;iCOLBLACK) bae_setcolor(i,COLNPREF); // Set the pick preference layer color bae_setcolor(preflay,COLPREF); bae_callmenu(MNU_BAEREDISPL); // Set the pick preference layer ced_setpickpreflay(preflay); } void showparameters() /* // Show parameter settings */ { STRINGS hl /* Header list */; STRINGS el /* Entry list */; int hn = 0 /* Header count */; int en = 0 /* Entry count */; int mc = 0 /* Requested popup columns count */; string coltab /* Color table name */; double x,y /* Value buffers */; int layer /* Layer number */; int i /* Loop variable */; // Get the report header sprintf(hl[0],REPHDPAR00); sprintf(hl[1],REPHDPAR01); hn=2; // Init the requested popup columns count mc=maxint(strlen(hl[0]),strlen(hl[1]))+1; // Get and report the display parameters sprintf(el[0],REPDEFLIB,icd_deflibname()); sprintf(el[1],REPCURLIB,icd_libfname()); sprintf(el[2],REPDEFELM,icd_defelemname()); sprintf(el[3],REPFNTNAM,bae_fontname()); sprintf(el[4],REPFNTCNT,bae_fontcharcnt()); sprintf(el[5],REPCOLTNAM,coltab); sprintf(el[6],REPCOORDM,UNIT); sprintf(el[7],REPPICKMODE, ced_getpickmode() ? ITMPICKLIST : ITMPICKPREF); sprintf(el[8],REPGRIDLK,bae_getgridlock() ? ITMLOCK : ITMFREE); sprintf(el[9],REPANGLLK,bae_getanglelock() ? ITMLOCK : ITMFREE); bae_getinpgrid(x,y); sprintf(el[10],REPINPUTX,baecvtl(x),UNIT); sprintf(el[11],REPINPUTY,baecvtl(y),UNIT); bae_getbackgrid(x,y); sprintf(el[12],REPDISPX,baecvtl(x),UNIT); sprintf(el[13],REPDISPY,baecvtl(y),UNIT); sprintf(el[14],REPCLPWDTH,baecvtl(ced_getwidedraw()),UNIT); ced_getpathwidth(x,y); sprintf(el[15],REPPWIDTHN,baecvtl(x),UNIT); sprintf(el[16],REPPWIDTHW,baecvtl(y),UNIT); sprintf(el[17],REPPPLAY,icdlayername(ced_getpickpreflay())); sprintf(el[18],REPMINCON,itemmincon()); en=19; // Store the connectivity layers header sprintf(el[en],REPECNLAY); en++; // Loop for all signal layers for (layer=0;layer=0;i--) mc=maxint(mc,strlen(el[i])+1); // Activate the popup menu bae_setintpar(16,3003); popupmenu(0,"",hl,hn,el,en,"",0,0,1,hn+en+2,mc,0,""); } string itemmincon() /* // Convert mincon function type to item string // Return value : // mincon item string */ { // Get the mincon function type switch (ced_getmincon()) { case 0 : return(ITMMINCON0); case 1 : return(ITMMINCON1); case 2 : return(ITMMINCON2); case 3 : return(ITMMINCON3); case 4 : return(ITMMINCON4); case 5 : return(ITMMINCON5); case 6 : return(ITMMINCON6); case 7 : return(ITMMINCON7); case 8 : return(ITMMINCON8); } // Undefined return(ITMUNDEF); } // User Language program end