Browse Source

* PChar -> PAnsiChar

Michaël Van Canneyt 2 years ago
parent
commit
ba81f4ed7a

+ 7 - 7
packages/fcl-pdf/src/fpparsettf.pp

@@ -222,7 +222,7 @@ Type
 
   TNameEntry = Packed Record
     Info: TNameRecord;
-    Value : String;
+    Value : AnsiString;
   end;
   TNameEntries = Array of TNameEntry;
 
@@ -277,8 +277,8 @@ Type
     procedure ParseOS2(AStream : TStream); virtual;
     procedure ParsePost(AStream : TStream); virtual;
     // Make differences for postscript fonts
-    procedure PrepareEncoding(Const AEncoding : String);
-    function MakeDifferences: String; virtual;
+    procedure PrepareEncoding(Const AEncoding : AnsiString);
+    function MakeDifferences: AnsiString; virtual;
     // Utility function to convert FShort to natural units
     Function ToNatural(AUnit: Smallint) : Smallint;
   public
@@ -822,8 +822,8 @@ begin
   if embed and not Embeddable then
     raise ETTF.Create(rsFontEmbeddingNotAllowed);
   PrepareEncoding(Encoding);
-//  MissingWidth:=ToNatural(GetAdvanceWidth(Chars[CharCodes^[32]]));  // Char(32) - Space character
-  FMissingWidth := GetAdvanceWidth(Chars[CharCodes^[32]]);  // Char(32) - Space character
+//  MissingWidth:=ToNatural(GetAdvanceWidth(Chars[CharCodes^[32]]));  // AnsiChar(32) - Space character
+  FMissingWidth := GetAdvanceWidth(Chars[CharCodes^[32]]);  // AnsiChar(32) - Space character
   for I:=0 to 255 do
   begin
     if (CharCodes^[i]>=0) and (CharCodes^[i]<=High(Chars))
@@ -834,7 +834,7 @@ begin
   end;
 end;
 
-procedure TTFFileInfo.PrepareEncoding(const AEncoding: String);
+procedure TTFFileInfo.PrepareEncoding(const AEncoding: AnsiString);
 var
   TE : TTTFEncoding;
   V : PTTFEncodingValues;
@@ -846,7 +846,7 @@ begin
   GetEncodingTables(Te,CharBase,V);
 end;
 
-function TTFFileInfo.MakeDifferences: String;
+function TTFFileInfo.MakeDifferences: AnsiString;
 var
   i,l: Integer;
 begin

+ 9 - 6
packages/fcl-pdf/src/fppdf.pp

@@ -626,8 +626,8 @@ type
     procedure AddName(const AKey,AName : String; const AMustEscape: boolean = True);
     procedure AddInteger(const AKey : String; AInteger : Integer);
     procedure AddReference(const AKey : String; AReference : Integer);
-    procedure AddString(const AKey, AString : String);
-    procedure AddString(const AKey:string;const AString : UnicodeString);
+    procedure AddString(const AKey: string; const AString : AnsiString);
+    procedure AddString(const AKey: string; const AString : UnicodeString);
     function IndexOfKey(const AValue: string): integer;
     procedure Write(const AStream: TStream); override;
     procedure WriteDictionary(const AObject: integer; const AStream: TStream);
@@ -1239,7 +1239,7 @@ const
 
 // Helper procedures - made them global for unit testing purposes
 procedure CompressStream(AFrom: TStream; ATo: TStream; ACompressLevel: TCompressionLevel = clDefault; ASkipHeader: boolean = False);
-procedure CompressString(const AFrom: string; var ATo: string);
+procedure CompressString(const AFrom: rawbytestring; var ATo: rawbytestring);
 procedure DecompressStream(AFrom: TStream; ATo: TStream);
 
 function mmToPDF(mm: single): TPDFFloat;
@@ -1366,7 +1366,7 @@ begin
   end;
 end;
 
-procedure CompressString(const AFrom: string; var ATo: string);
+procedure CompressString(const AFrom: rawbytestring; var ATo: rawbytestring);
 var
   lStreamFrom : TStringStream;
   lStreamTo  : TStringStream;
@@ -1727,9 +1727,12 @@ begin
       if FTextMappingList[n].CharID = c then
       begin
         result := Result + IntToHex(FTextMappingList[n].GlyphID, 4);
+        c:=0;
         break;
       end;
     end;
+    if C<>0 then
+      Result:=Result+IntToHex(C, 4);
   end;
 end;
 
@@ -4442,7 +4445,7 @@ begin
   AddElement(AKey,Document.CreateReference(AReference));
 end;
 
-procedure TPDFDictionary.AddString(const AKey, AString: String);
+procedure TPDFDictionary.AddString(const AKey : string; const AString: AnsiString);
 begin
   AddElement(AKey,Document.CreateString(AString));
 end;
@@ -4898,7 +4901,7 @@ end;
 function TPDFDocument.GetFontNamePrefix(const AFontNum: Integer): string;
 begin
   // TODO: it must be 6 uppercase characters - no numbers!
-  Result := 'GRAEA' + Char(65+AFontNum) + '+';
+  Result := 'GRAEA' + AnsiChar(65+AFontNum) + '+';
 end;
 
 function TPDFDocument.IndexOfGlobalXRef(const AValue: string): integer;

+ 1 - 1
packages/fcl-pdf/src/fpttf.pp

@@ -533,7 +533,7 @@ procedure TFPFontCacheList.ReadStandardFonts;
   function GetWinFontsDir: string;
   var
     {$if FPC_FULLVERSION < 30400}
-    w :  Array[0..MaxPathLen] of Char;
+    w :  Array[0..MaxPathLen] of AnsiChar;
     {$ELSE}
     w : pwidechar;
     {$ENDIF}

+ 2 - 2
packages/fcl-pdf/src/fpttfencodings.pp

@@ -28,7 +28,7 @@ Type
      teiso_8859_1,teiso_8859_2,teiso_8859_4,teiso_8859_5,teiso_8859_7,
      teiso_8859_9, teiso_8859_11, teiso_8859_15, teiso_8859_16,
      tekoi8_r,tekoi8_u);
-  TTTFEncodingNames = array[0..255] of string;
+  TTTFEncodingNames = array[0..255] of Ansistring;
   PTTFEncodingNames = ^TTTFEncodingNames;
   TTTFEncodingValues = array[0..255] of Integer;
   PTTFEncodingValues = ^TTTFEncodingValues;
@@ -41,7 +41,7 @@ Implementation
 Function GetEncoding(const AName : String) : TTTFEncoding;
 
 Var
-  Names : Array[TTTFEncoding] of string =
+  Names : Array[TTTFEncoding] of String =
   ('','cp874','cp1250','cp1251','cp1252','cp1253','cp1254','cp1255','cp1257','cp1258',
    'iso_8859_1','iso_8859_2','iso_8859_4','iso_8859_5','iso_8859_7',
    'iso_8859_9', 'iso_8859_11', 'iso_8859_15', 'iso_8859_16',

+ 8 - 8
packages/fcl-pdf/tests/fppdf_test.pas

@@ -350,7 +350,7 @@ end;
 procedure TTestPDFObject.TestFloatStr;
 
 Var
-  C : Char;
+  C : AnsiChar;
 
 begin
   AssertEquals('Failed on 1', '0.12', TMockPDFObject.FloatStr(TPDFFLoat(0.12)));
@@ -1575,10 +1575,10 @@ end;
 procedure TTestPDFLineStyle.TestLocalisationChanges;
 var
   o: TMockPDFLineStyle;
-  d: char;
+  d: AnsiChar;
 begin
   d :=  DefaultFormatSettings.DecimalSeparator;
-  DefaultFormatSettings.DecimalSeparator := Char('~');
+  DefaultFormatSettings.DecimalSeparator := AnsiChar('~');
   o := TMockPDFLineStyle.Create(PDF, ppsDashDotDot, 1, 1);
   try
     AssertEquals('Failed on 1', '', S.DataString);
@@ -1850,8 +1850,8 @@ var
   lSBefore: TStringStream;
   lSAfter: TStringStream;
   lCompressed: TMemoryStream;
-  lBefore: string;
-  lAfter: string;
+  lBefore: rawbytestring;
+  lAfter: rawbytestring;
 begin
   lBefore := GetTestString;
   lSBefore := TStringStream.Create(lBefore);
@@ -1871,9 +1871,9 @@ end;
 
 procedure TTestCompressionDecompression.TestStringCompressionDecompression;
 var
-  lBefore: string;
-  lCompressed: string;
-  lAfter: string;
+  lBefore: rawbytestring;
+  lCompressed: rawbytestring;
+  lAfter: rawbytestring;
   s: TStringStream;
   e: TStringStream;
 begin

+ 18 - 16
packages/fcl-pdf/tests/unittests_console.lpi

@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <CONFIG>
   <ProjectOptions>
-    <Version Value="10"/>
+    <Version Value="12"/>
     <General>
       <Flags>
+        <MainUnitHasCreateFormStatements Value="False"/>
+        <MainUnitHasTitleStatement Value="False"/>
+        <MainUnitHasScaledStatement Value="False"/>
         <LRSInOutputDirectory Value="False"/>
+        <CompatibilityMode Value="True"/>
       </Flags>
       <SessionStorage Value="InIDEConfig"/>
-      <MainUnit Value="0"/>
       <Title Value="unittests_console"/>
     </General>
     <VersionInfo>
@@ -19,24 +22,22 @@
     </BuildModes>
     <PublishOptions>
       <Version Value="2"/>
-      <IgnoreBinaries Value="False"/>
-      <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
-      <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
     </PublishOptions>
     <RunParams>
       <local>
-        <FormatVersion Value="1"/>
-        <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
+        <CommandLineParams Value="--suite=TTestPDFUTF8String.TestWrite"/>
+        <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T &apos;Lazarus Run Output&apos; -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
       </local>
+      <FormatVersion Value="2"/>
+      <Modes Count="1">
+        <Mode0 Name="default">
+          <local>
+            <CommandLineParams Value="--suite=TTestPDFUTF8String.TestWrite"/>
+            <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T &apos;Lazarus Run Output&apos; -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
+          </local>
+        </Mode0>
+      </Modes>
     </RunParams>
-    <RequiredPackages Count="2">
-      <Item1>
-        <PackageName Value="FPCUnitConsoleRunner"/>
-      </Item1>
-      <Item2>
-        <PackageName Value="FCL"/>
-      </Item2>
-    </RequiredPackages>
     <Units Count="4">
       <Unit0>
         <Filename Value="unittests_console.lpr"/>
@@ -77,7 +78,8 @@
       </Debugging>
     </Linking>
     <Other>
-      <CustomOptions Value="-dfptestX"/>
+      <CustomOptions Value="-dfptestX 
+-tunicodertl"/>
     </Other>
   </CompilerOptions>
   <Debugging>

+ 3 - 0
packages/fcl-pdf/tests/unittests_console.lpr

@@ -3,6 +3,9 @@ program unittests_console;
 {$mode objfpc}{$H+}
 
 uses
+  {$ifdef unix}
+  cwstring,
+  {$endif}
   Classes
   ,consoletestrunner
   {$i testunits.inc}