亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? window.c

?? 個人弄的一些小東西
?? C
?? 第 1 頁 / 共 2 頁
字號:

/*
    window.c

    window manager functions and variables
*/

#include "usrif.h"
#undef   NULL
#ifdef TRUE #undef TRUE #endif
#ifdef FALSE #undef FALSE #endif
#include <stdio.h>

/* window management variables */
static  window_t  *front, *back;
int     num_windows = 0;

/* globals */
extern  seg_t   *desk_seg;
extern  rect_t  screen;

/* minimum window size */
#define MIN_WX  100
#define MIN_WY  70

/* viewport for window manager */
vport_t *the_port = NULL;

/* base rectangle for new_rect() */
rect_t  base_rect;

/* new window size */
#define HSIZE   400
#define VSIZE   300

/* offsets for new window */
#define HDEL    50
#define VDEL    50

#define VBASE   (screen.top-VSIZE-VDEL)
#define HBASE   HDEL

/* new window rectangle, offset variables */
int hdir = HDEL, vdir = 0-HDEL;

/*
    window manager initialization function

    init_window()
        called to reset window list,
        also creates and draws the
        desktop segment
*/

init_window()
{
vport_t *new_vport();

    front = back = NULL;
    num_windows = 0;

    /* make primary viewport */
    the_port = new_vport(&screen);

    /* map to entire screen */
    the_port->window = &screen;

    /* make desktop segment */
    make_desktop();
    draw_seg(desk_seg, the_port);

    /* set first window place and size */
    set_rect(&base_rect,
        HBASE, VBASE, HBASE+HSIZE, VBASE+VSIZE);
}

/*
    window creation functions

    new_window( name, segment, rect )
        instantiates a new window structure,
        creates the window shape segment
        to correspond with name and rect,
        links window into window list,
        draws new window,
        and returns a pointer to new window

    new_rect()
        creates new window rectangle,
        offset from last time
        new_rect() was called
*/

window_t    *new_window( name, segment, rect )
char        *name;
seg_t       *segment;
rect_t      *rect;
{
window_t    *new;
key_t       *mykey, *inst_key();
rect_t      *inst_rect(), *new_rect(), *copy_rect();
text_t      *inst_text();

void  view_window();

    num_windows++;
    if(num_windows > MAX_WINDOWS)
        return(NULL);

    if(new = CALLOC( 1, window_t))
        {
        new->name = name;

        /* check for minimum window size */
        if( (rect->right - rect->left) < MIN_WX)
            rect->right = rect->left + MIN_WX;

        if( (rect->top - rect->bottom) < MIN_WY)
            rect->top = rect->bottom + MIN_WY;

        /* get new window rectangle */
        new->area = rect;

        /* make title area rectangle */
        new->title = inst_rect(
            new->area->left + 2,
            new->area->top - 20,
            new->area->right - 2,
            new->area->top - 2);

        /* make data area rectangle */
        new->pane = inst_rect(
            new->area->left + 1,
            new->area->bottom + 1,
            new->area->right - 1,
            new->area->top - 22);

        /* make segment for window */
        cr_seg( name );
            add_attr(RESET);

            /* fill shape background */
            add_attr(FILL);
            add_rect(copy_rect(new->area));
            add_attr(NOFILL);

            /* frame shape background */
            add_attr(FRAME);
            add_attr(BLACK);
            add_rect(copy_rect(new->area));

            /* fill window title area */
            add_attr(FILL);
            add_attr(BLACK);
            add_rect(copy_rect(new->title));

            add_attr(WHITE);
            text(name,
               new->title->left + 8,
               new->title->bottom + 5,
               LEFT , BOTTOM);

        new->shape = cl_seg();

        new->data = segment;
        new->data_win = copy_rect(segment->bbox);

        draw_win( new );

        /* link to top of window list */
        /* no windows exist */
        if(front == NULL)
            back = front = new;

        /* some windows exist */
        else {
            /* make new window the front window */
            front->prev = new;
            new->next = front;

            new->prev = NULL;
            front = new;
            }
        }
    else
        error("can't create new window");

    /* set up window customer */
    new->button_fn = &view_window;
    return(new);
}


rect_t  *new_rect()
{
rect_t  r, *n, *copy_rect();
int p;

    /* copy current base window rectangle */
    n = copy_rect(&base_rect);

    offset_rect(&base_rect, hdir, vdir);

    /* move base rectangle to new position */
    if( base_rect.right > screen.right)
        {
        p = base_rect.bottom;
        set_rect(&base_rect,HBASE,p,HBASE+HSIZE,p+VSIZE);
        }

    if( base_rect.bottom < screen.bottom)
        {
        p = base_rect.left;
        set_rect(&base_rect,p,VBASE,p+HSIZE,VBASE+VSIZE);
        }

    return(n);
}

/*
    window pop function

    pop_window(window)
        makes given window the 
        top, or active, window
*/


pop_window( window )
window_t    *window;
{
    /* already on top? */
    if(window == front)
        return;

    /* relink to top */
    if(window == back)
        {
        /* window is bottom one */
        window->prev->next = NULL;
        back = window->prev;
        }
    else  /* not front or back */
        {
        window->prev->next = window->next;
        window->next->prev = window->prev;
        }

    front->prev = window;
    window->next = front;

    window->prev = NULL;
    front = window;

   /* draw window */
    draw_win(window);
}

/*
    window detection functions

    front_window()
        returns window pointer to
        active, or front, window

    what_window( where )
        returns pointer to
        top window that the point
        where is in, else NULL

    in_window( point, window)
    in_title( point, window)
    in_pane( point, window)
        these return TRUE if point
        is in the region, else FALSE
*/

window_t    *front_window()
{
    return(front);
}

window_t    *what_window( where )
point_t     *where;
{
window_t    *mywin, *inwin;

    inwin = NULL;
    mywin = back;

    while(mywin != NULL)
        {
        if(in_window( where, mywin ))
            inwin = mywin;

        /* next higher window */
        mywin = mywin->prev;
        }

    return(inwin);
}

in_window( point, window)
point_t     *point;
window_t    *window;
{
    if(pt_in_rect( window->area, point))
        return(TRUE);

    return(FALSE);
}

in_title( point, window)
point_t     *point;
window_t    *window;
{
    if(pt_in_rect( window->title, point))
        return(TRUE);

    return(FALSE);
}

in_pane( point, window)
point_t     *point;
window_t    *window;
{
    if(pt_in_rect( window->pane, point))
        return(TRUE);

    return(FALSE);
}

/*
    window menu control functions

    mod_window( event, window )
        queries user for window modification
        for the active window, then performs
        selected modification operation

    view_window( event, window )
        queries user for view operation
        for active window, then performs
        selected view operation
*/

/* operation selection menu item definitions */
#define CANCEL  0
#define MOVE    1
#define SIZE    2
#define CLOSE   3

/* window modify operation selection menu items */
char    *mod_ops[4] =
    {
    "Cancel",
    "Move",
    "Size",
    "Close"
    };

mod_window( event, window )
event_t     *event;
window_t    *window;
{
int sel;
rect_t  *old_rect, *copy_rect();

    /* pops up menu, user selects item */
    sel = pop_up_menu( 4, mod_ops );

    /* which item was selected? */ 
    switch(sel)
        {
        case    CANCEL  :
            /* user decided not to modify */
            return;

        case    MOVE    :
            /* animate window move */
            {
            point_t first, last, delta;
            key_t   *key;

            /* copy window bounds */
            old_rect = copy_rect(window->area);

            get_cursor(&first);
            xor_rect(window->area,FRAME);

            /* animate window outline */   
            while(event->what != DN_BUTTON_EVENT)
                {
                get_cursor(&last);
                event = get_next_event();

                delta.x = event->where.x - last.x;
                delta.y = event->where.y - last.y;

                if( delta.x != 0 || delta.y != 0)
                    {
                    /* remove old outline */
                    xor_rect(window->area,FRAME);

                    /* set new outline */
                    offset_rect(window->area, delta.x, delta.y);

                    /* add new outline */
                    xor_rect(window->area,FRAME);
                    }
                }

            /* found new window size */
            xor_rect(window->area,FRAME);

            /* calculate window's change in position */
            delta.x = event->where.x - first.x;
            delta.y = event->where.y - first.y;

            /* offset window's regions */
            offset_rect(window->title, delta.x, delta.y);
            offset_rect(window->pane, delta.x, delta.y);
            offset_rect(window->shape->bbox, delta.x, delta.y);

            /* offset window's shape segment */
            key = window->shape->data;

            while(key != NULL)
                {
                switch(key->type)
                    {
                    case RECT :
                        offset_rect(key->key.rect, delta.x, delta.y);
                        break;
                    case TEXT :
                        key->key.text->origin.x += delta.x;
                        key->key.text->origin.y += delta.y;
                        break;
                    }
                key = key->next;
                }

            /* refresh bit map */
            all_wins( old_rect );
            free(old_rect);

            draw_win( window );
            }
            break;

        case    SIZE    :
            /* animate window sizing */
            {
            point_t first, last, delta;
            key_t   *key;

            /* copy window bounds */
            old_rect = copy_rect(window->area);

            first.x = window->area->right;
            first.y = screen.top - window->area->bottom;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级理论片| 成人免费视频免费观看| 国产欧美日韩卡一| 精品国产一区二区精华| 欧美日韩在线直播| 欧美午夜片在线看| 欧洲一区二区三区在线| 在线看日本不卡| 在线观看一区日韩| 欧美精选一区二区| 欧美一区二区三区免费视频| 欧美一区二区三区在线视频| 欧美一级二级三级乱码| 欧美电影在哪看比较好| 日韩午夜三级在线| 国产婷婷色一区二区三区在线| 日韩一区二区三区视频| 欧美成人高清电影在线| 久久精品日产第一区二区三区高清版| 久久久不卡网国产精品一区| 国产欧美一区二区在线观看| 亚洲欧美激情小说另类| 亚洲一区在线视频观看| 日本午夜精品一区二区三区电影| 视频一区在线视频| 国产一区二区美女诱惑| 99久久综合99久久综合网站| 欧美色老头old∨ideo| 欧美一区二区三区免费| 国产校园另类小说区| 中文字幕永久在线不卡| 亚洲电影第三页| 国产自产高清不卡| 色偷偷成人一区二区三区91| 日韩网站在线看片你懂的| 中文字幕欧美激情| 午夜日韩在线观看| 成人午夜激情在线| 欧美精品久久久久久久久老牛影院| 26uuu欧美| 亚洲一区二区三区在线看| 久久激情五月激情| 99久精品国产| 久久综合九色综合97_久久久| 亚洲人吸女人奶水| 久草在线在线精品观看| 欧美亚洲愉拍一区二区| 精品国产一区二区精华| 亚洲一二三四久久| 国产丶欧美丶日本不卡视频| 91.xcao| 国产亚洲欧美色| 日韩国产一二三区| 91成人免费网站| 中文字幕亚洲综合久久菠萝蜜| 蜜臀av在线播放一区二区三区 | 欧美性一级生活| 国产午夜亚洲精品不卡| 日韩影院免费视频| 欧美亚洲图片小说| 精品国产成人在线影院| 一区二区三区在线观看动漫| 美女一区二区视频| 欧美视频在线观看一区二区| 日韩丝袜美女视频| 精品av久久707| 亚洲成a人v欧美综合天堂| 国产一区二区不卡| 欧美网站大全在线观看| 一区二区欧美国产| 91蝌蚪porny成人天涯| 国产欧美综合在线观看第十页 | 91网站最新地址| 亚洲国产美女搞黄色| 日日摸夜夜添夜夜添精品视频| 成人精品鲁一区一区二区| 午夜伊人狠狠久久| 日韩1区2区3区| 91精品久久久久久蜜臀| 欧美精品一区二区在线观看| 日本亚洲欧美天堂免费| 极品尤物av久久免费看| 538在线一区二区精品国产| 日日摸夜夜添夜夜添国产精品| 欧美影院精品一区| 五月婷婷另类国产| 91精品国产免费| 国内成人自拍视频| 欧美激情艳妇裸体舞| 成人综合激情网| 亚洲欧洲日韩在线| 欧美揉bbbbb揉bbbbb| 日日噜噜夜夜狠狠视频欧美人| 91.com视频| 精品一区二区三区视频| 精品日韩在线一区| 成人久久久精品乱码一区二区三区| 国产精品国产三级国产aⅴ原创| av不卡一区二区三区| 亚洲精品免费电影| 欧美日韩激情一区二区| 日本sm残虐另类| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 成人黄色片在线观看| 1024亚洲合集| 777精品伊人久久久久大香线蕉| 无吗不卡中文字幕| 久久精品亚洲精品国产欧美| 99精品久久久久久| 午夜激情一区二区| 久久久久久久久久看片| 欧美自拍偷拍一区| 久久国产尿小便嘘嘘尿| 中文字幕一区二区三中文字幕| 精品视频资源站| 国产福利不卡视频| 精品国产乱码久久久久久牛牛| 一本到不卡精品视频在线观看| 一区二区在线观看免费| 色一情一伦一子一伦一区| 亚洲在线视频一区| 911精品国产一区二区在线| 麻豆免费精品视频| 日韩一区二区三区在线观看| 亚洲一区二区三区在线| 精品污污网站免费看| 免费观看成人av| 国产精品无遮挡| 精品国产乱码久久久久久浪潮| 在线看日本不卡| 成人激情动漫在线观看| 久草这里只有精品视频| 午夜精品久久久久久久99樱桃| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美日韩国产高清一区二区三区 | 久久综合久色欧美综合狠狠| 在线观看日韩毛片| 91丨九色porny丨蝌蚪| 国产精品综合一区二区| 久久国产视频网| 日日夜夜精品视频免费| 亚洲国产成人av好男人在线观看| 一色桃子久久精品亚洲| 国产精品美女久久久久久久网站| 亚洲精品一区二区三区99| 欧美一级片在线看| 日韩视频123| 国产精品青草久久| 欧美丰满少妇xxxxx高潮对白| 美脚の诱脚舐め脚责91| 精品久久久久久久久久久院品网| 久久伊99综合婷婷久久伊| 欧美一级午夜免费电影| 国产精品一区二区91| 亚洲一级电影视频| 日本韩国精品一区二区在线观看| 亚洲欧美日韩综合aⅴ视频| 亚洲日本电影在线| 亚洲精品高清在线观看| 亚洲精品菠萝久久久久久久| 亚洲电影在线播放| 亚洲精品成人悠悠色影视| 欧美日本精品一区二区三区| 不卡区在线中文字幕| 亚洲成人免费视频| 天天免费综合色| 中文字幕一区二区三中文字幕| 国产精品久久毛片| 亚洲综合区在线| 日韩和欧美的一区| 国产精品自拍av| 白白色 亚洲乱淫| 91福利在线观看| 日韩一级大片在线观看| 欧美mv日韩mv国产| 国产精品视频yy9299一区| 亚洲精品久久嫩草网站秘色| 亚洲午夜影视影院在线观看| 免费人成精品欧美精品| 国产成人啪午夜精品网站男同| 一本大道久久a久久精品综合| 欧美美女bb生活片| 久久九九久精品国产免费直播| 亚洲欧美一区二区三区久本道91 | 青青青伊人色综合久久| 国产乱码精品1区2区3区| 成人av在线一区二区三区| 欧美午夜一区二区三区| 亚洲精品一区二区三区影院 | 久久99精品视频| 97超碰欧美中文字幕| 欧美一区二区三区免费大片| 国产精品乱码一区二区三区软件| 亚洲一区二区三区中文字幕| 国模套图日韩精品一区二区| 欧美在线观看视频一区二区三区| 欧美电影免费观看高清完整版| 一区二区三区资源| 国产成人午夜99999| 4438成人网|