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

📄 provide.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1986 Wayne A. Christopher, U. C. Berkeley CAD Group **********//* *   faustus@cad.berkeley.edu, ucbvax!faustus * Permission is granted to modify and re-distribute this code in any manner * as long as this notice is preserved.  All standard disclaimers apply. * * Toss the help window up on the screen, and deal with the graph... */#include "spice.h"#include "cpstd.h"#include "hlpdefs.h"#include "suffix.h"bool hlp_usex = false;voidhlp_provide(top)    topic *top;{    toplink *res;    topic *parent, *newtop;    if (!top)	return;#ifdef HAS_X_    if (getenv("DISPLAY") || hlp_displayname)        hlp_usex = true;#endif    top->xposition = top->yposition = 0;    if (hlp_usex) {        if (!hlp_xdisplay(top)) {            fprintf(stderr, "Couldn't open X display.\n");            return;        }    } else {        if (!hlp_tdisplay(top)) {            fprintf(stderr, "Couldn't display text\n");            return;        }    }#ifdef HAS_X11       /* X11 does this asynchronously */    if (hlp_usex) return;#endif        for (;;) {        if (hlp_usex)            res = hlp_xhandle(&parent);        else            res = hlp_thandle(&parent);        if (!res && !parent) {            /* No more windows. */            hlp_killfamily(top);            if (hlp_usex) hlp_xclosedisplay(); /* need to change                     display pointer back J.H. */            return;        }        if (res) {            /* Create a new window... */            if (hlp_usex)                hlp_xwait(parent, true);            if (!(newtop = hlp_read(res->place))) {                fprintf(stderr, "Internal error: bad link\n");                hlp_xwait(parent, false);                continue;            }            if (hlp_usex)                hlp_xwait(parent, false);            newtop->next = parent->children;            parent->children = newtop;            newtop->parent = parent;            newtop->xposition = parent->xposition + 50;            newtop->yposition = parent->yposition + 50;            if (hlp_usex) {                if (!hlp_xdisplay(newtop)) {                    fprintf(stderr, "Couldn't open win\n");                     return;                 }            } else {                if (!hlp_tdisplay(newtop)) {                    fprintf(stderr, "Couldn't display\n");                     return;                 }            }        } else {            /* Blow this one and its descendants away. */            hlp_killfamily(parent);        hlp_fixchildren(parent);            if (parent == top)                return;        }    }}voidhlp_fixchildren(parent)topic *parent;{    topic *pa;    if (parent->parent) {        if (parent->parent->children == parent)            parent->parent->children =                    parent->next;        else {            for (pa = parent->parent->children;                    pa->next; pa = pa->next)                if (pa->next == parent)                    break;            if (!pa->next) {                fprintf(stderr, "bah...\n");            }            pa->next = pa->next->next;        }    }}/* Note that this doesn't actually free the data structures, just gets * rid of the window. */voidhlp_killfamily(top)    topic *top;{    topic *ch;    for (ch = top->children; ch; ch = ch->next)        hlp_killfamily(ch);    if (hlp_usex)        hlp_xkillwin(top);    else        hlp_tkillwin(top);    top->children = NULL;    return;}

⌨️ 快捷键说明

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