Browse Source

+ unicode version of MoveChar

git-svn-id: branches/unicodekvm@48554 -
nickysn 4 years ago
parent
commit
7fd8562d4a
1 changed files with 16 additions and 0 deletions
  1. 16 0
      packages/fv/src/drivers.inc

+ 16 - 0
packages/fv/src/drivers.inc

@@ -385,7 +385,11 @@ remain unchanged if Ord(C) is zero. The high bytes of the Sw_Words are
 set to Attr, or remain unchanged if Attr is zero.
 set to Attr, or remain unchanged if Attr is zero.
 25May96 LdB
 25May96 LdB
 ---------------------------------------------------------------------}
 ---------------------------------------------------------------------}
+{$ifdef FV_UNICODE}
+PROCEDURE MoveChar (Var Dest; C: UnicodeString; Attr: Byte; Count: Sw_Word);
+{$else FV_UNICODE}
 PROCEDURE MoveChar (Var Dest; C: Char; Attr: Byte; Count: Sw_Word);
 PROCEDURE MoveChar (Var Dest; C: Char; Attr: Byte; Count: Sw_Word);
+{$endif FV_UNICODE}
 
 
 {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
 {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
 {                        KEYBOARD SUPPORT ROUTINES                          }
 {                        KEYBOARD SUPPORT ROUTINES                          }
@@ -1048,6 +1052,17 @@ END;
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 {  MoveChar -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 10Jul99 LdB          }
 {  MoveChar -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 10Jul99 LdB          }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
+{$ifdef FV_UNICODE}
+PROCEDURE MoveChar (Var Dest; C: UnicodeString; Attr: Byte; Count: Sw_Word);
+VAR I: Word; P: PEnhancedVideoCell;
+BEGIN
+   For I := 1 To Count Do Begin
+     P := @(PEnhancedVideoCell(@Dest)[I-1]);          { Pointer to TEnhancedVideoCell }
+     If (Attr <> 0) Then P^.Attribute := Attr;        { Copy attribute }
+     If (C<>'') and (C<>#$0000) Then P^.ExtendedGraphemeCluster := C; { Copy character }
+   End;
+END;
+{$else FV_UNICODE}
 PROCEDURE MoveChar (Var Dest; C: Char; Attr: Byte; Count: Sw_Word);
 PROCEDURE MoveChar (Var Dest; C: Char; Attr: Byte; Count: Sw_Word);
 VAR I: Word; P: PWord;
 VAR I: Word; P: PWord;
 BEGIN
 BEGIN
@@ -1057,6 +1072,7 @@ BEGIN
      If (Ord(C) <> 0) Then WordRec(P^).Lo := Byte(C); { Copy character }
      If (Ord(C) <> 0) Then WordRec(P^).Lo := Byte(C); { Copy character }
    End;
    End;
 END;
 END;
+{$endif FV_UNICODE}
 
 
 {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
 {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
 {                        KEYBOARD SUPPORT ROUTINES                          }
 {                        KEYBOARD SUPPORT ROUTINES                          }