⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfbtext.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: -C- 1982 Giles C. Billingsley**********//* * mfbtext.c * * sccsid "@(#)mfbtext.c    1.9  9/3/83" * *     MFB is a graphics package that was developed by the integrated * circuits group of the Electronics Research Laboratory and the * Department of Electrical Engineering and Computer Sciences at * the University of California, Berkeley, California.  The programs * in MFB are available free of charge to any interested party. * The sale, resale, or use of these program for profit without the * express written consent of the Department of Electrical Engineering * and Computer Sciences, University of California, Berkeley, California, * is forbidden. */  #include "spice.h"#include "mfb.h"#include "suffix.h"#define MFBFORMAT   MFBCurrent->strings/************************************************************************** * *                             MFBText * *     MFBText contains MFB routines for the management of graphtext. * **************************************************************************/voidMFBMore(Left,Bottom,Right,Top,Textfile)    int Left;    int Bottom;    int Right;    int Top;    FILE *Textfile;    {    char cbuf[200];     /* 200 chars per line max */    int c,i;    int linecount;    int done = 0;    int oldfillpattern;    int oldforeground;    int nlines;    int nchars;    int controlchar;    /* test to be sure of window area */    if(Top < Bottom)        MFBSwapInt(Top,Bottom);    if(Right < Left)        MFBSwapInt(Left,Right);    /* calculate parameters */    nlines = (Top - Bottom)/MFBCurrent->fontHeight;    nchars = (Right - Left)/(MFBCurrent->fontWidth + MFBCurrent->fontXOffset);    nchars = MFBmin(nchars,200);    /* save old style ID's */    oldforeground = MFBCurrent->fgColorId;    oldfillpattern = MFBCurrent->fillPattern;    if(nlines <= 0) return;    linecount = 1;    MFBSetFillPattern(0);    MFBSetColor(0);    MFBBox(Left,Bottom,Right,Top);    MFBSetColor(oldforeground);    while(! done) {    i = 0;    controlchar = 0;    while(i < nchars && (c = getc(Textfile)) != '\n' && c != EOF){        if(c == 9){ /* tab */        cbuf[i++] = ' ';        while(i < nchars && (i % 8) != 0) cbuf[i++] = ' ';        }        else if(c < ' '){        if(controlchar == 0){            cbuf[i++] = '^';            controlchar = 1;            (void) ungetc(c,Textfile);            }        else{            cbuf[i++] = c + '@';            controlchar = 0;            }        }        else if(c <= '~')            cbuf[i++] = c;        }    cbuf[i] = 0;    if(c == EOF) done = 1;    MFBText(cbuf,Left,Top - (linecount) * MFBCurrent->fontHeight,0);    MFBUpdate();    if(done || ++linecount >= nlines){        linecount = 1;        if(done)            MFBText("-DONE-",Left,Bottom,0);        else            MFBText("-MORE- (^D to exit)",Left,Bottom,0);        MFBUpdate();        c = (*MFBCurrent->kybrd_getchar)();        if(c == 4)         done = 1;            MFBSetColor(0);        MFBBox(Left,Bottom,Right,Top);            MFBSetColor(oldforeground);        }    }    MFBSetFillPattern(oldfillpattern);    }voidMFBScroll(Left,Bottom,Right,Top,Textfile)    int Left;    int Bottom;    int Right;    int Top;    FILE *Textfile;    {    char cbuf[200];     /* 200 chars per line max */    int c,i,j;    int curline;        /* current line in the textfile */    int linecount;    int done = 0;    int oldfillpattern;    int oldforeground;    int nlines;    int nchars;    int controlchar;    /* test to be sure of window area */    if(Top < Bottom)        MFBSwapInt(Top,Bottom);    if(Right < Left)        MFBSwapInt(Left,Right);    /* calculate parameters */    nlines = (Top - Bottom)/MFBCurrent->fontHeight;    nchars = (Right - Left)/(MFBCurrent->fontWidth + MFBCurrent->fontXOffset);    nchars = MFBmin(nchars,200);    /* save old style ID's */    oldforeground = MFBCurrent->fgColorId;    oldfillpattern = MFBCurrent->fillPattern;    if(nlines <= 0) return;    curline = 1;    MFBSetFillPattern(0);    MFBSetColor(0);    MFBBox(Left,Bottom,Right,Top);    MFBSetColor(oldforeground);    while( !done ){    rewind(Textfile);    /* skip first curline's */    for(i = 1; i < curline; ++i){        while((c = getc(Textfile)) != '\n' && c != EOF) ;        }        /* output nlines of text */    linecount = 0;        for(j = 1; j < nlines; ++j){        i = 0;        controlchar = 0;        while(i < nchars && (c = getc(Textfile)) != '\n' && c != EOF){            if(c == 9){ /* tab */            cbuf[i++] = ' ';            while(i < nchars && (i % 8) != 0) cbuf[i++] = ' ';            }            else if(c < ' '){            if(controlchar == 0){                cbuf[i++] = '^';                controlchar = 1;                (void) ungetc(c,Textfile);                }            else{                cbuf[i++] = c + '@';                controlchar = 0;                }            }            else if(c <= '~')                cbuf[i++] = c;            }        if(c == '\n') ++linecount;        cbuf[i] = 0;        MFBText(cbuf,Left,Top - (j) * MFBCurrent->fontHeight,0);        MFBUpdate();        if(c == EOF){        j = nlines;        done = 1;        }        }    if(done)        MFBText("-DONE-",Left,Bottom,0);    else        MFBText("-MORE- (^D to exit, ^U to scroll up)",Left,Bottom,0);    MFBUpdate();    c = (*MFBCurrent->kybrd_getchar)();    --linecount;    if(c == 4)        done = 1;    else if(c == 21){        curline -= linecount;        if(curline < 1)        curline = 1;        }    else        curline += linecount;        MFBSetColor(0);    MFBBox(Left,Bottom,Right,Top);        MFBSetColor(oldforeground);    }    MFBSetFillPattern(oldfillpattern);    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -