소스 검색

+ Mode management helper routines

carl 26 년 전
부모
커밋
8d2d8a5279
1개의 변경된 파일106개의 추가작업 그리고 0개의 파일을 삭제
  1. 106 0
      rtl/inc/graph/modes.inc

+ 106 - 0
rtl/inc/graph/modes.inc

@@ -0,0 +1,106 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1993,99 by the Free Pascal development team
+
+    This include implements video mode management.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+
+ procedure addmode(mode: TModeInfo);
+  {********************************************************}
+  { Procedure AddMode()                                    }
+  {--------------------------------------------------------}
+  { This routine adds <mode> to the list of recognized     }
+  { modes. Duplicates are allowed.                         }
+  {********************************************************}
+  var
+    list: PModeInfo;
+    newlst : PModeInfo;
+  begin
+    if not assigned(ModeList) then
+      begin
+        new(ModeList);
+        move(mode, ModeList^, sizeof(TModeInfo));
+      end
+    else
+      begin
+        list := ModeList;
+        { go to the end of the list }
+        while assigned(list^.next) do
+          list:=list^.next;
+        new(NewLst);
+        list^.next := NewLst;
+        move(mode, NewLst^, sizeof(TModeInfo));
+      end;
+  end;
+
+
+  procedure initmode(var mode: TModeInfo);
+  {********************************************************}
+  { Procedure InitMode()                                   }
+  {--------------------------------------------------------}
+  { This routine initialized the mode to default values.   }
+  {********************************************************}
+   begin
+     FillChar(mode,sizeof(TModeInfo),#0);
+   end;
+
+
+   function searchmode(ReqDriver : integer; reqmode: integer): PModeInfo;
+  {********************************************************}
+  { Procedure SearchMode()                                 }
+  {--------------------------------------------------------}
+  { This routine searches the list of recognized modes,    }
+  { and tries to find the <reqmode> in the <reqdriver>     }
+  { return nil if not found, otherwise returns the found   }
+  { structure.                                             }
+  {********************************************************}
+    var
+     list: PModeInfo;
+    begin
+        searchmode := nil;
+        list := ModeList;
+        { go to the end of the list }
+        while assigned(list) do
+          begin
+             if (list^.DriverNumber = ReqDriver) and
+               (list^.ModeNumber = ReqMode) then
+               begin
+                 searchmode := list;
+                 exit;
+               end;
+             list:=list^.next;
+          end;
+    end;
+
+
+   procedure cleanmode;far;
+  {********************************************************}
+  { Procedure CleanMode()                                  }
+  {--------------------------------------------------------}
+  { This routine deallocates the mode list.                }
+  { It is called as an exit procedure ONLY.                }
+  {********************************************************}
+    var
+      list: PModeInfo;
+      tmp : PModeInfo;
+    begin
+        list := ModeList;
+        { go to the end of the list }
+        while assigned(list) do
+        begin
+          tmp := list;
+          list:=list^.next;
+          dispose(tmp);
+        end;
+    end;
+
+