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

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

?? window.c

?? 《c語言高級實例解析》光盤所附源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:

#include "tdestr.h"
#include "common.h"
#include "define.h"
#include "tdefunc.h"



int  initialize_window( void )
{
int  top;
int  bottom;
int  start_col;
int  end_col;
WINDOW *wp;        
WINDOW *window;
register file_infos *fp;     
register int rc;
line_list_ptr ll;
line_list_ptr temp_ll;

   rc = OK;
   window = g_status.current_window;
   fp = g_status.current_file;
   if (window == NULL) {
      
      top = start_col = 0;
      bottom  = g_display.nlines;
      end_col = g_display.ncols - 1;
   } else {
     
      top       = window->top_line - 1;
      bottom    = window->bottom_line;
      start_col = window->start_col;
      end_col   = window->end_col;
   }

   assert( top < bottom );
   assert( start_col < end_col );
   assert( fp != NULL );

   if (create_window( &wp, top, bottom, start_col, end_col, fp ) == ERROR) {
      
      error( WARNING, bottom, main4 );

     
      if (fp->ref_count == 0) {

         
         if (fp->prev != NULL)
            fp->prev->next = fp->next;
         else
            g_status.file_list = fp->next;

         if (fp->next != NULL)
            fp->next->prev = fp->prev;

        

         ll = fp->undo_top;
         while (ll != NULL) {
            temp_ll = ll->next;
            if (ll->line != NULL)
               my_free( ll->line );
            my_free( ll );
            ll = temp_ll;
         }

         ll = fp->line_list;
         while (ll != NULL) {
            temp_ll = ll->next;
            if (ll->line != NULL)
               my_free( ll->line );
            my_free( ll );
            ll = temp_ll;
         }

#if defined( __MSC__ )
         _fheapmin( );
#endif

         free( fp );
         wp = g_status.current_window;
         if (wp != NULL && wp->visible)
            g_status.current_file = wp->file_info;
         else
            g_status.stop = TRUE;
      }
      rc = ERROR;
   }

   if (rc != ERROR) {
     
      wp->ccol = wp->start_col;
      wp->rcol = wp->bcol = 0;
      wp->rline = 1L;
      wp->ll    = fp->line_list;
      wp->visible = TRUE;
      wp->letter = fp->next_letter++;
      if (window != NULL)
         window->visible = FALSE;

      
      g_status.current_window = wp;
   }
   return( rc );
}



int  next_window( WINDOW *window )
{
register WINDOW *wp;
int  change;

   if (window != NULL) {
      change = FALSE;
     
      wp = window->next;
      while (wp != NULL) {
         if (wp->visible) {
            change = TRUE;
            break;
         }
         wp = wp->next;
      }

      
      if (!change) {
         wp = g_status.window_list;
         while (wp != window) {
            if (wp->visible) {
               change = TRUE;
               break;
            }
            wp = wp->next;
         }
      }
      if (change == TRUE) {
         entab_linebuff( );
         un_copy_line( window->ll, window, TRUE );
         g_status.current_window = wp;
         g_status.current_file = wp->file_info;
      }
   }
   return( OK );
}



int  prev_window( WINDOW *window )
{
register WINDOW *wp;
int  change;

   if (window != NULL) {
      change = FALSE;

     
      wp = window->prev;
      while (wp != NULL) {
         if (wp->visible) {
            change = TRUE;
            break;
         }
         wp = wp->prev;
      }

     
      if (!change) {
         wp = window->next;
         if (wp != NULL) {
            while (wp->next != NULL)
               wp = wp->next;
            while (wp != window) {
               if (wp->visible) {
                  change = TRUE;
                  break;
               }
               wp = wp->prev;
            }
         }
      }
      if (change == TRUE) {
         entab_linebuff( );
         un_copy_line( window->ll, window, TRUE );
         g_status.current_window = wp;
         g_status.current_file = wp->file_info;
      }
   }
   return( OK );
}


/*
 * 作用: 在光標處水平切分窗口
 * 參數:  window:  當前窗口的指針
 */
int  split_horizontal( WINDOW *window )
{
register WINDOW *wp;
register WINDOW *win;   
WINDOW *temp;
file_infos *file;       
int  rc;

   rc = OK;
   win = window;
   if ( win != NULL) {

      /*
       * 檢查是否有空放置新窗口
       */
      if (win->bottom_line - win->cline < 2) {
         /*
          * 向上引動光標
          */
         error( WARNING, win->bottom_line, win1 );
         rc = ERROR;
      } else {
         file = win->file_info;

         assert( file != NULL );

         if (create_window( &temp, win->cline+1, win->bottom_line,
                            win->start_col, win->end_col, file ) == ERROR) {
            /*
             * 內存不足
             */
            error( WARNING, win->bottom_line, main4 );
            rc = ERROR;
         }
         if (rc == OK  &&  temp != NULL) {
            entab_linebuff( );
            un_copy_line( win->ll, win, TRUE );
            wp = temp;
            /*
             * 記錄當前窗口因為創立新的窗口而丟生的行。
			 * 并且調整它的頁大小              
             */
            win->bottom_line = win->cline;
            setup_window( win );
            display_current_window( win );

            /*
             * 設置新的光標位置
             */
            wp->rcol = win->rcol;
            wp->ccol = win->ccol;
            wp->bcol = win->bcol;
            wp->rline = win->rline;
            wp->bin_offset = win->bin_offset;
            wp->ll    = win->ll;
            wp->cline = wp->cline + win->cline - (win->top_line + win->ruler);
            if (wp->cline > wp->bottom_line)
               wp->cline = wp->bottom_line;
            wp->visible = TRUE;
            wp->vertical = win->vertical;
            wp->letter = file->next_letter++;
            wp->ruler  = mode.ruler;

            /*
             * 新的窗口變成了當前窗口
             */
            g_status.current_window = wp;

            show_window_count( g_status.window_count );
            show_window_header( wp );
            display_current_window( wp );
            if (wp->vertical)
               show_vertical_separator( wp );
            make_ruler( wp );
            show_ruler( wp );
            rc = OK;
         }
      }
   } else
      rc = ERROR;
   return( rc );
}



int  split_vertical( WINDOW *window )
{
register WINDOW *wp;
register WINDOW *win;   
WINDOW *temp;
file_infos *file;       
int  rc;

   rc = OK;
   win = window;
   if (win != NULL) {

      
      if (win->start_col + 15 > win->ccol) {
        
         error( WARNING, win->bottom_line, win2 );
         rc = ERROR;
      } else if (win->end_col - 15 < win->ccol) {
        
         error( WARNING, win->bottom_line, win3 );
         rc = ERROR;
      } else {
         file = win->file_info;

         assert( file != NULL );

         if (create_window( &temp, win->top_line-1, win->bottom_line,
                            win->ccol+1, win->end_col, file ) == ERROR) {
           
            error( WARNING, win->bottom_line, main4 );
            rc = ERROR;
         }

         if (rc == OK  &&  temp != NULL) {
            entab_linebuff( );
            un_copy_line( win->ll, win, TRUE );
            wp = temp;

            
            win->ccol = win->end_col = win->ccol - 1;
            win->rcol--;
            win->vertical = TRUE;
            show_window_header( win );
            show_vertical_separator( win );
            display_current_window( win );
            make_ruler( win );
            show_ruler( win );
            show_ruler_pointer( win );

            
            wp->rcol = win->rcol;
            wp->ccol = wp->start_col + win->ccol - win->start_col;
            if (wp->ccol > wp->end_col)
               wp->ccol = wp->end_col;
            wp->bcol  = win->bcol;
            wp->rline = win->rline;
            wp->bin_offset = win->bin_offset;
            wp->ll       = win->ll;
            wp->cline    = win->cline;
            wp->visible  = TRUE;
            wp->vertical = TRUE;
            wp->letter   = file->next_letter++;
            wp->ruler    = mode.ruler;

            
            g_status.current_window = wp;

            check_virtual_col( wp, wp->rcol, wp->ccol );
            wp->file_info->dirty = FALSE;
            show_window_count( g_status.window_count );
            show_window_header( wp );
            display_current_window( wp );
            make_ruler( wp );
            show_ruler( wp );
         }
      }
   } else
      rc = ERROR;
   return( rc );
}



void show_vertical_separator( WINDOW *window )
{
int  i;
int  line;
int  col;

   line = window->top_line - 1;
   col  = window->end_col + 1;
   if (col < g_display.ncols - 1) {
      i = window->bottom_line - line;

      assert( i <= g_display.nlines );

      while (i-- >= 0)
         c_output( VERTICAL_CHAR, col, line++, g_display.head_color );
   }
}



int  size_window( WINDOW *window )
{
char line_buff[(MAX_COLS+1)*2]; 
int  func;
int  c;
int  resize;
int  show_above_ruler;
int  old_bottom_line;
int  old_top_line;
int  new_bottom_line;
int  new_top_line;
register WINDOW *above;
register WINDOW *win;

   win = window;
   if (win->top_line != 1 && !win->vertical) {
      entab_linebuff( );
      un_copy_line( win->ll, win, TRUE );
      save_screen_line( 0, win->bottom_line, line_buff );

     
      set_prompt( win4, win->bottom_line );

      
      above = g_status.window_list;
      while (above->bottom_line + 2 != win->top_line || !above->visible)
         above = above->next;
      if (above->vertical)
         
         error( WARNING, win->bottom_line, win5 );
      else {
         old_top_line = win->top_line;
         old_bottom_line = above->bottom_line;
         show_above_ruler = FALSE;
         for (func=0; func != AbortCommand && func != Rturn; ) {

            
            c = getkey( );
            func = getfunc( c );
            if (c == RTURN || func == NextLine || func == BegNextLine)
               func = Rturn;
            else if (c == ESC)
               func = AbortCommand;
            resize = FALSE;

           
            if (func == LineUp) {
               if (above->bottom_line > above->top_line + above->ruler) {
                  if (win->rline == (win->cline - (win->top_line+win->ruler-1)))
                     --win->cline;
                  --win->top_line;
                  if (above->cline == above->bottom_line)
                     --above->cline;
                  --above->bottom_line;
                  resize = TRUE;
                  if (mode.ruler) {
                     if (win->ruler == FALSE) {
                        if (win->cline == win->top_line)
                           ++win->cline;
                        if (win->cline > win->bottom_line)
                           win->cline = win->bottom_line;
                        win->ruler = TRUE;
                     }
                  }
               }

            
            } else if (func == LineDown) {
               if (win->bottom_line > win->top_line + win->ruler) {
                  if (win->cline == win->top_line + win->ruler)
                     ++win->cline;
                  ++win->top_line;
                  ++above->bottom_line;
                  resize = TRUE;
                  if (mode.ruler) {
                     if (above->ruler == FALSE) {
                        if (above->cline == above->top_line)
                           ++above->cline;
                        if (above->cline > above->bottom_line)
                           above->cline = above->bottom_line;
                        above->ruler = TRUE;
                        make_ruler( above );
                        show_above_ruler = TRUE;
                     }
                  }
               }
            }

           
            if (resize == TRUE) {
               setup_window( above );
               display_current_window( above );
               if (show_above_ruler) {
                  show_ruler( above );
                  show_ruler_pointer( above );
                  show_above_ruler = FALSE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
jlzzjlzz亚洲日本少妇| 99国产一区二区三精品乱码| 国产午夜精品一区二区三区嫩草| 99精品久久免费看蜜臀剧情介绍| 麻豆精品蜜桃视频网站| 亚洲人成精品久久久久久| 精品国产成人系列| 欧美亚洲国产bt| 国产精品香蕉一区二区三区| 亚洲成精国产精品女| 亚洲视频一二区| 国产三级三级三级精品8ⅰ区| 91精品国产欧美一区二区成人| av中文字幕不卡| 国产91精品免费| 激情久久五月天| 蜜桃视频一区二区三区| 男人操女人的视频在线观看欧美| 国产精品国产三级国产aⅴ原创| 日韩精品一区二区三区蜜臀 | 亚洲欧洲国产日韩| 欧美精品一区二区三区四区| 欧美日韩国产一区| 色偷偷成人一区二区三区91| 成人一级视频在线观看| 韩国一区二区视频| 久久国产精品色婷婷| 日韩在线观看一区二区| 亚洲韩国精品一区| 亚洲精品视频自拍| 亚洲免费电影在线| 亚洲少妇中出一区| 亚洲人成精品久久久久| 亚洲国产高清不卡| 国产精品久久久久aaaa樱花| 国产片一区二区三区| 国产午夜精品一区二区三区嫩草| 亚洲成av人影院| 亚洲动漫第一页| 亚洲电影一级黄| 三级久久三级久久久| 午夜精品福利一区二区蜜股av | 日韩限制级电影在线观看| 欧美日本乱大交xxxxx| 欧美日韩精品综合在线| 欧美日韩综合不卡| 91精品国模一区二区三区| 欧美一卡2卡3卡4卡| 精品免费日韩av| 精品动漫一区二区三区在线观看| 日韩精品自拍偷拍| 久久久久久亚洲综合影院红桃| 亚洲精品一区二区在线观看| 久久亚洲一级片| 欧美国产激情二区三区| 国产精品久久久久久亚洲伦 | 中文字幕一区二区三区四区| 中文字幕在线观看不卡| 亚洲免费av观看| 亚洲高清不卡在线观看| 日本视频一区二区三区| 国产综合久久久久久鬼色| 国产精品1区2区3区| jlzzjlzz亚洲日本少妇| 欧洲av一区二区嗯嗯嗯啊| 欧美精品乱人伦久久久久久| 日韩精品中文字幕在线不卡尤物| 精品国产乱码久久| 中国色在线观看另类| 日韩码欧中文字| 日韩av在线免费观看不卡| 国内精品写真在线观看| av日韩在线网站| 欧美理论在线播放| 2023国产精品自拍| 自拍偷拍欧美精品| 日本伊人色综合网| 国产精品一区二区久久不卡| 一本大道久久a久久精二百| 欧美一区二区三区喷汁尤物| 午夜欧美大尺度福利影院在线看| 久久99国产精品麻豆| 波多野结衣中文字幕一区| 欧美日韩美女一区二区| 欧美国产日产图区| 日本成人超碰在线观看| 不卡的av在线| 日韩欧美中文一区二区| 亚洲日本一区二区| 激情六月婷婷综合| 欧美在线你懂得| 欧美国产欧美综合| 蜜桃精品视频在线观看| 色诱亚洲精品久久久久久| 精品国产百合女同互慰| 亚洲国产精品久久不卡毛片| 国产suv精品一区二区三区| 欧美日本一区二区在线观看| 中文字幕中文字幕在线一区| 美国一区二区三区在线播放| 99精品热视频| 久久久国际精品| 日韩高清在线观看| 色网站国产精品| 中文字幕av不卡| 99久久免费精品| 精品久久五月天| 日日嗨av一区二区三区四区| 91亚洲精品久久久蜜桃网站| 久久久久久久久久久电影| 婷婷六月综合亚洲| 在线国产亚洲欧美| 国产精品久久久久国产精品日日| 韩国精品主播一区二区在线观看| 欧美日韩国产影片| 一区二区三区蜜桃| 91麻豆免费看片| 国产精品麻豆欧美日韩ww| 国产一区二区视频在线播放| 日韩一区二区麻豆国产| 三级一区在线视频先锋 | 免费精品99久久国产综合精品| 欧美亚洲高清一区| 亚洲精品第1页| 99久久亚洲一区二区三区青草| 久久久91精品国产一区二区精品| 久久精品久久精品| 欧美一二区视频| 免费观看成人鲁鲁鲁鲁鲁视频| 国产欧美一区二区精品久导航| 麻豆91免费观看| 欧美大片免费久久精品三p| 日韩av一二三| 欧美大片一区二区| 久久91精品久久久久久秒播| 日韩丝袜情趣美女图片| 蜜桃传媒麻豆第一区在线观看| 日韩一二三四区| 麻豆一区二区三| 精品久久99ma| 精品系列免费在线观看| 精品入口麻豆88视频| 久久99国产精品免费网站| 久久理论电影网| 成人午夜精品在线| 亚洲欧美在线视频观看| 91色视频在线| 亚洲成va人在线观看| 日韩欧美精品三级| 国产裸体歌舞团一区二区| 欧美经典一区二区| 91丨九色丨尤物| 一区二区三区高清| 3d动漫精品啪啪1区2区免费| 久久国产日韩欧美精品| 久久先锋影音av鲁色资源网| 国产乱子伦视频一区二区三区| 亚洲第一综合色| 日韩一区二区三区三四区视频在线观看 | 欧美日韩另类国产亚洲欧美一级| 天天av天天翘天天综合网色鬼国产| 91精品啪在线观看国产60岁| 久久精品国产77777蜜臀| 国产欧美一区在线| 欧美亚洲国产一区二区三区 | 成人av第一页| 亚洲一卡二卡三卡四卡无卡久久| 欧美日韩激情一区二区| 紧缚捆绑精品一区二区| 国产精品白丝在线| 欧美二区三区91| 高清不卡一区二区在线| 亚洲午夜久久久久| 精品国产青草久久久久福利| 成人黄色软件下载| 亚洲综合色成人| 久久综合九色综合欧美98| 99久久亚洲一区二区三区青草| 日韩精品电影在线观看| 国产三区在线成人av| 欧美日韩卡一卡二| 成人一级片网址| 日产国产高清一区二区三区| 国产精品久久久久久妇女6080| 久久精品在这里| 欧美在线啊v一区| 国产成人在线免费观看| 亚洲不卡一区二区三区| 久久久久久久久久电影| 欧美三级一区二区| 成人中文字幕合集| 丝袜美腿亚洲一区二区图片| 国产精品毛片大码女人| 欧美刺激午夜性久久久久久久| 91丨九色丨蝌蚪富婆spa| 久久av老司机精品网站导航| 亚洲一区二区视频在线观看| 国产视频不卡一区| 欧美成人精品1314www| 在线这里只有精品|