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

📄 view.c

📁 seismic software,very useful
💻 C
📖 第 1 页 / 共 4 页
字号:
       case VIEW_FRONT:       case VIEW_XSEC:        RENDER_ATTR(0, 0, mode == DRAW_ALL, 0, (mode & DRAW_IMAGE),                    (AXIS_LEFT | AXIS_BASE) * !MovieRun(), !MovieRun(), 0,                    !MovieRun(), view->showpicks);        RenderHorz(data, view->map[AXIS_ACROSS], view->map[AXIS_DOWN],                   view->map[AXIS_DEEP], view->map[AXIS_4D], view->map[AXIS_5D],                   view->margins[MARGIN_LEFT], view->margins[MARGIN_TOP],                   render, view->margins, _attr_);        pixels +=            MapSize(view->map[AXIS_DOWN]) * MapSize(view->map[AXIS_ACROSS]);        break;       case VIEW_SIDE:        RENDER_ATTR(0, 0, mode == DRAW_ALL, 0, (mode & DRAW_IMAGE),                    (AXIS_LEFT | AXIS_BASE) * !MovieRun(), !MovieRun(), 0,                    !MovieRun(), view->showpicks);        RenderHorz(data, view->map[AXIS_DEEP], view->map[AXIS_DOWN],                   view->map[AXIS_ACROSS], view->map[AXIS_4D],                   view->map[AXIS_5D], view->margins[MARGIN_LEFT],                   view->margins[MARGIN_TOP], render, view->margins, _attr_);        pixels += MapSize(view->map[AXIS_DOWN]) * MapSize(view->map[AXIS_DEEP]);        break;       case VIEW_TOP:        RENDER_ATTR(0, 0, mode == DRAW_ALL, 0, (mode & DRAW_IMAGE),                    (AXIS_LEFT | AXIS_BASE) * !MovieRun(), !MovieRun(), 0,                    !MovieRun(), view->showpicks);        RenderHorz(data, view->map[AXIS_ACROSS], view->map[AXIS_DEEP],                   view->map[AXIS_DOWN], view->map[AXIS_4D], view->map[AXIS_5D],                   view->margins[MARGIN_LEFT], view->margins[MARGIN_TOP],                   render, view->margins, _attr_);        pixels +=            MapSize(view->map[AXIS_ACROSS]) * MapSize(view->map[AXIS_DEEP]);        break;       case VIEW_ARRAY:        ViewDrawArray(view);        pixels +=            MapSize(view->map[AXIS_DOWN]) * MapSize(view->map[AXIS_ACROSS]) *            view->nacross * view->ndown;        break;       case VIEW_TRANSP:        ViewDrawTransp(view);        pixels +=            MapSize(view->map[AXIS_DOWN]) * MapSize(view->map[AXIS_ACROSS]) *            MapSize(view->map[AXIS_DEEP]);        break;    }    map = ViewMovieMap(view);    switch (view->style ){       case VIEW_CUBE:       case VIEW_FENCE:       case VIEW_THREE:        sprintf(message, "%s %s %s %s %s",                AxisScript(MapAxis(view->map[AXIS_DOWN]),                           MapFrame(view->map[AXIS_DOWN])),                AxisScript(MapAxis(view->map[AXIS_ACROSS]),                           MapFrame(view->map[AXIS_ACROSS])),                AxisScript(MapAxis(view->map[AXIS_DEEP]),                           MapFrame(view->map[AXIS_DEEP])),                AxisScript(MapAxis(view->map[AXIS_4D]),                           MapFrame(view->map[AXIS_4D])),                AxisScript(MapAxis(view->map[AXIS_5D]),                           MapFrame(view->map[AXIS_5D])));        strcat(message, "                                   ");        DrawText(view->margins[MARGIN_LEFT], 0, TEXT_H0 | TEXT_V0,                 DataTitle(data));        DrawText(view->margins[MARGIN_LEFT], 15, TEXT_H0 | TEXT_V0, message);        break;       case VIEW_FRONT:       case VIEW_SIDE:       case VIEW_TOP:        strcpy(message, AxisScript(MapAxis(map), MapFrame(map)));        strcat(message, "                                   ");        DrawText(view->margins[MARGIN_LEFT], 0, TEXT_H0 | TEXT_V0,                 DataTitle(data));        DrawText(view->margins[MARGIN_LEFT], 15, TEXT_H0 | TEXT_V0, message);        break;    }    if( view->showpicks && view->style != VIEW_TRANSP ){        PikDraw(NO_INDEX, DRAW);    }    if( mode == DRAW_ALL && view->style != VIEW_TRANSP ){        TymeEnd(pixels);        DrawWatch(0);    }}/* set array */void ViewArray(int nacross, int ndown, int across0, int dacross){    extern View view;    if( !view ){        return;    }    if( view->style != VIEW_ARRAY ){        view->style = VIEW_ARRAY;        MapSetFrame(ViewMovieMap(view), 0);    }    view->nacross = nacross;    view->ndown = ndown;    view->dacross = dacross;    view->across0 = across0;    MapSetFrameBounds(view->map[AXIS_DEEP], view->across0,                      view->across0 +                      view->nacross * view->ndown * view->dacross);    ViewSize(view);    ViewDraw(view, DRAW_ALL);    RenderDraw();}/* draw array */void ViewDrawArray(View view){    extern Data data;    extern Render render;    int      panel, frame, ih, iv, margins[4];    string   label;    char    *labelp, labelp1;    MapSaveFrame(view->map[AXIS_DEEP]);    for( panel = 0; panel < view->nacross * view->ndown; panel++ ){        frame = panel * view->dacross + view->across0;        if( frame >= AxisSize(MapAxis(view->map[AXIS_DEEP])) ){            break;        }        iv = panel / view->nacross;        ih = panel % view->nacross;        MapSetFrame(view->map[AXIS_DEEP], frame);        RENDER_ATTR(0, 0, 1, 0, DRAW_FRONT, 0, 1, 0, 0, view->showpicks);        RenderHorz(data, view->map[AXIS_ACROSS],                   view->map[AXIS_DOWN], view->map[AXIS_DEEP],                   view->map[AXIS_4D], view->map[AXIS_5D], ih =                   ih * (MapSize(view->map[AXIS_ACROSS]) + GAP), iv =                   iv * (MapSize(view->map[AXIS_DOWN]) + GAP), render,                   view->margins, _attr_);        if( MapSize(view->map[AXIS_ACROSS]) > 100 ){            DrawText(ih, iv + 2, TEXT_H0 | TEXT_V0,                     AxisScript(ViewDataAxis(view, AXIS_DEEP), frame));        }else{            labelp = AxisScript(ViewDataAxis(view, AXIS_DEEP), frame);            while (*labelp != '=' && *labelp != '\0' ){                labelp++;            }            if( *labelp == '=' ){                labelp++;            }else{                labelp = AxisScript(ViewDataAxis(view, AXIS_DEEP), frame);            }            DrawText(ih, iv, TEXT_H0 | TEXT_V0, labelp);        }    }    MapRestoreFrame(view->map[AXIS_DEEP]);}/* draw array of picked renders */void ViewDrawPicks(View view){    extern Data data;    extern Render render;    int      panel, frame, ih, iv, margins[4], save;    string   label;    char    *labelp;    save = MapFrame(view->map[AXIS_DEEP]);    for( panel = 0; panel < view->nacross * view->ndown; panel++ ){        if( panel > PickSize() ){            break;        }        frame = PickFrame(panel);        if( frame == NO_INDEX ||            frame >= AxisSize(MapAxis(view->map[AXIS_DEEP]))) break;        iv = panel / view->nacross;        ih = panel % view->nacross;        MapSetFrame(view->map[AXIS_DEEP], frame);        RENDER_ATTR(0, 0, 1, 0, DRAW_FRONT, 0, 1, 0, 0, view->showpicks);        RenderHorz(data, view->map[AXIS_ACROSS],                   view->map[AXIS_DOWN], view->map[AXIS_DEEP],                   view->map[AXIS_4D], view->map[AXIS_5D], ih =                   ih * (MapSize(view->map[AXIS_ACROSS]) + GAP), iv =                   iv * (MapSize(view->map[AXIS_DOWN]) + GAP), render,                   view->margins, _attr_);        if( MapSize(view->map[AXIS_ACROSS]) > 100 ){            DrawText(ih, iv, TEXT_H0 | TEXT_V0,                     AxisScript(ViewDataAxis(view, AXIS_DEEP), frame));        }else{            labelp = AxisScript(ViewDataAxis(view, AXIS_DEEP), frame);            while (*labelp != '=' && *labelp != '\0')                labelp++;            if( *labelp == '=' ){                labelp++;            }            else                labelp = AxisScript(ViewDataAxis(view, AXIS_DEEP), frame);            DrawText(ih, iv, TEXT_H0 | TEXT_V0, labelp);        }    }    MapSetFrame(view->map[AXIS_DEEP], save);}/* cube extracts three panels */void ViewDrawCube(View view, int mode){    extern Data data;    extern Render render;    if( !view ){        return;    }    /* front */    RENDER_ATTR(0, 0, mode == DRAW_ALL, 0,                (mode & DRAW_FRONT) * (mode & DRAW_IMAGE),                (AXIS_LEFT | AXIS_BASE) * !MovieRun(), !MovieRun(), 1,                !MovieRun(), view->showpicks);    RenderHorz(data, view->map[AXIS_ACROSS], view->map[AXIS_DOWN],               view->map[AXIS_DEEP], view->map[AXIS_4D], view->map[AXIS_5D],               view->margins[MARGIN_LEFT],               view->margins[MARGIN_TOP] + MapSize(view->map[AXIS_DEEP]) + GAP,               render, view->margins, _attr_);    /* side */    RENDER_ATTR(0, 1, mode == DRAW_ALL, 0,                (mode & DRAW_SIDE) * (mode & DRAW_IMAGE),                (AXIS_BASE) * !MovieRun(), !MovieRun(), 1, !MovieRun(),                view->showpicks);    RenderVert(data, view->map[AXIS_DEEP], view->map[AXIS_DOWN],               view->map[AXIS_ACROSS], view->map[AXIS_4D], view->map[AXIS_5D],               view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_ACROSS]) +               GAP + 1,               MapSize(view->map[AXIS_DEEP]) + view->margins[MARGIN_TOP] + GAP,               render, view->margins, _attr_);    /* top */    RENDER_ATTR(0, 1, mode == DRAW_ALL, 0,                (mode & DRAW_TOP) * (mode & DRAW_IMAGE),                (AXIS_LEFT) * !MovieRun(), !MovieRun(), 1, !MovieRun(),                view->showpicks);    RenderHorz(data, view->map[AXIS_ACROSS], view->map[AXIS_DEEP],               view->map[AXIS_DOWN], view->map[AXIS_4D], view->map[AXIS_5D],               view->margins[MARGIN_LEFT], view->margins[MARGIN_TOP], render,               view->margins, _attr_);}/* fence extracts three panels */void ViewDrawFence(View view, int mode){    extern Data data;    extern Render render;    if( !view ){        return;    }    RenderClear();    DrawClear();    /* front */    if( mode & DRAW_FRONT ){        RENDER_ATTR(0, 0, mode == DRAW_ALL, 1, mode & DRAW_FRONT, 0,                    !MovieRun(), 0, 0, 0);        RenderHorz(data, view->map[AXIS_ACROSS], view->map[AXIS_DOWN],                   view->map[AXIS_DEEP], view->map[AXIS_4D], view->map[AXIS_5D],                   view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_DEEP]) -                   MapInverse(view->map[AXIS_DEEP],                              MapFrame(view->map[AXIS_DEEP])),                   view->margins[MARGIN_TOP] + MapInverse(view->map[AXIS_DEEP],                                                          MapFrame(view->map                                                                   [AXIS_DEEP])),                   render, view->margins, _attr_);    }    RENDER_ATTR(0, 0, mode == DRAW_ALL, 0, 0, (AXIS_LEFT | AXIS_BASE), 0, 0, 0,                0);    RenderHorz(data, view->map[AXIS_ACROSS], view->map[AXIS_DOWN],               view->map[AXIS_DEEP], view->map[AXIS_4D], view->map[AXIS_5D],               view->margins[MARGIN_LEFT],               view->margins[MARGIN_TOP] + MapSize(view->map[AXIS_DEEP]),               render, view->margins, _attr_);    /* side */    if( mode & DRAW_SIDE ){        RENDER_ATTR(0, 1, mode == DRAW_ALL, 1, mode & DRAW_SIDE, 0, !MovieRun(),                    0, 0, 0);        RenderVert(data, view->map[AXIS_DEEP], view->map[AXIS_DOWN],                   view->map[AXIS_ACROSS], view->map[AXIS_4D],                   view->map[AXIS_5D],                   view->margins[MARGIN_LEFT] +                   MapInverse(view->map[AXIS_ACROSS],                              MapFrame(view->map[AXIS_ACROSS])) - 1,                   MapSize(view->map[AXIS_DEEP]) + view->margins[MARGIN_TOP],                   render, view->margins, _attr_);    }    RENDER_ATTR(0, 1, mode == DRAW_ALL, 0, 0, (AXIS_BASE), 0, 0, 0, 0);    RenderVert(data, view->map[AXIS_DEEP], view->map[AXIS_DOWN],               view->map[AXIS_ACROSS], view->map[AXIS_4D], view->map[AXIS_5D],               view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_ACROSS]) +               GAP + 1,               MapSize(view->map[AXIS_DEEP]) + view->margins[MARGIN_TOP],               render, view->margins, _attr_);    /* top */    if( mode & DRAW_TOP ){        RENDER_ATTR(0, 1, mode == DRAW_ALL, 1, mode & DRAW_TOP, 0, !MovieRun(),                    0, 0, 0);        RenderHorz(data, view->map[AXIS_ACROSS], view->map[AXIS_DEEP],                   view->map[AXIS_DOWN], view->map[AXIS_4D], view->map[AXIS_5D],                   view->margins[MARGIN_LEFT],                   view->margins[MARGIN_TOP] + MapInverse(view->map[AXIS_DOWN],                                                          MapFrame(view->map                                                                   [AXIS_DOWN])),                   render, view->margins, _attr_);    }    RENDER_ATTR(0, 1, mode == DRAW_ALL, 0, 0, (AXIS_LEFT), 0, 0, 0, 0);    RenderHorz(data, view->map[AXIS_ACROSS], view->map[AXIS_DEEP],               view->map[AXIS_DOWN], view->map[AXIS_4D], view->map[AXIS_5D],               view->margins[MARGIN_LEFT],               view->margins[MARGIN_TOP], render, view->margins, _attr_);}/* plan view extracts three panels */void ViewDrawPlan(View view, int mode){    extern Data data;    extern Render render;    if( !view ){        return;    }    /* front */    RENDER_ATTR(0, 0, mode == DRAW_ALL, 0,                (mode & DRAW_FRONT) * (mode & DRAW_IMAGE),                (AXIS_LEFT | AXIS_BASE) * !MovieRun(), !MovieRun(), 1,                !MovieRun(), view->showpicks);    RenderHorz(data, view->map[AXIS_ACROSS], view->map[AXIS_DOWN],               view->map[AXIS_DEEP], view->map[AXIS_4D], view->map[AXIS_5D],               view->margins[MARGIN_LEFT],               MapSize(view->map[AXIS_DEEP]) + view->margins[MARGIN_TOP] + GAP,               render, view->margins, _attr_);    /* side */    RENDER_ATTR(0, 0, mode == DRAW_ALL, 0,                (mode & DRAW_SIDE) * (mode & DRAW_IMAGE),                (AXIS_BASE) * !MovieRun(), !MovieRun(), 1, !MovieRun(),                view->showpicks);    RenderVert(data, view->map[AXIS_DEEP], view->map[AXIS_DOWN],               view->map[AXIS_ACROSS], view->map[AXIS_4D], view->map[AXIS_5D],               view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_ACROSS]) +               GAP + 1,               MapSize(view->map[AXIS_DEEP]) + view->margins[MARGIN_TOP] + GAP,               render, view->margins, _attr_);    /* top */    RENDER_ATTR(0, 0, mode == DRAW_ALL, 0,                (mode & DRAW_TOP) * (mode & DRAW_IMAGE),                (AXIS_LEFT) * !MovieRun(), !MovieRun(), 1, !MovieRun(),                view->showpicks);    RenderHorz(data, view->map[AXIS_ACROSS], view->map[AXIS_DEEP],               view->map[AXIS_DOWN], view->map[AXIS_4D], view->map[AXIS_5D],               view->margins[MARGIN_LEFT], view->margins[MARGIN_TOP], render,               view->margins, _attr_);}/* draw transparent cube */void ViewDrawTransp(View view){    int      iz, nz;    extern Data data;    extern Render render;    /* draw all axes */    RENDER_ATTR(0, 0, DRAW_ALL, 0, 0, (AXIS_LEFT | AXIS_BASE), 0, 0, 0, 0);    RenderHorz(data, view->map[AXIS_ACROSS], view->map[AXIS_DOWN],               view->map[AXIS_DEEP], view->map[AXIS_4D], view->map[AXIS_5D],               view->margins[MARGIN_LEFT],               view->margins[MARGIN_TOP] + MapSize(view->map[AXIS_DEEP]),               render, view->margins, _attr_);    RENDER_ATTR(0, 1, DRAW_ALL, 0, 0, (AXIS_BASE), 0, 0, 0, 0);    RenderVert(data, view->map[AXIS_DEEP], view->map[AXIS_DOWN],               view->map[AXIS_ACROSS], view->map[AXIS_4D], view->map[AXIS_5D],               view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_ACROSS]) + 1,               MapSize(view->map[AXIS_DEEP]) + view->margins[MARGIN_TOP],               render, view->margins, _attr_);    RENDER_ATTR(0, 1, DRAW_ALL, 0, 0, (AXIS_LEFT), 0, 0, 0, 0);    RenderHorz(data, view->map[AXIS_ACROSS], view->map[AXIS_DEEP],               view->map[AXIS_DOWN], view->map[AXIS_4D], view->map[AXIS_5D],               view->margins[MARGIN_LEFT],               view->margins[MARGIN_TOP], render, view->margins, _attr_);    MapSaveFrame(ViewMovieMap(view));    switch (view->movie ){       case MOVIE_FRONT:        MapSetFrame1(view->map[AXIS_DEEP], 0);        break;       case MOVIE_SIDE:        MapSetFrame1(view->map[AXIS_ACROSS], 0);        break;       case MOVIE_TOP:        MapSetFrame1(view->map[AXIS_DOWN], MapSize(view->map[AXIS_DOWN]) - 1);        break;    }    UITimer(1, ViewDrawTranspCallback);    DrawLine(view->margins[MARGIN_LEFT],             view->margins[MARGIN_TOP] + MapSize(view->map[AXIS_DEEP]),             view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_ACROSS]),             view->margins[MARGIN_TOP] + MapSize(view->map[AXIS_DEEP]), DRAW);    DrawLine(view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_ACROSS]) +             MapSize(view->map[AXIS_DEEP]),             view->margins[MARGIN_TOP],             view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_ACROSS]),             view->margins[MARGIN_TOP] + MapSize(view->map[AXIS_DEEP]), DRAW);    DrawLine(view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_ACROSS]),             view->margins[MARGIN_TOP] + MapSize(view->map[AXIS_DOWN]) +             MapSize(view->map[AXIS_DEEP]),             view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_ACROSS]),             view->margins[MARGIN_TOP] + MapSize(view->map[AXIS_DEEP]), DRAW);    DrawLine(view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_DEEP]),             view->margins[MARGIN_TOP],             view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_DEEP]) +             MapSize(view->map[AXIS_ACROSS]), view->margins[MARGIN_TOP], DRAW);    DrawLine(view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_ACROSS]) +             MapSize(view->map[AXIS_DEEP]),             view->margins[MARGIN_TOP],             view->margins[MARGIN_LEFT] + MapSize(view->map[AXIS_DEEP]) +             MapSize(view->map[AXIS_ACROSS]),             view->margins[MARGIN_TOP] + MapSize(view->map[AXIS_DOWN]), DRAW);}/* callback to animate transparent drawing */void ViewDrawTranspCallback(void){    extern View view;    extern Render render;    extern Data data;    int      block;

⌨️ 快捷键说明

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