Browse Source

Use System SwapEndian function.

Margers 4 days ago
parent
commit
0c451a5103

+ 3 - 3
packages/fcl-image/src/fpreadqoi.pas

@@ -80,8 +80,8 @@ begin
   if Result then
     begin
    {$IFDEF ENDIAN_LITTLE}
-    QoiHeader.width:=Swap32(QoiHeader.width);
-    QoiHeader.height:=Swap32(QoiHeader.height);
+    QoiHeader.width:=SwapEndian(QoiHeader.width);
+    QoiHeader.height:=SwapEndian(QoiHeader.height);
    {$ENDIF}
     Result := (QoiHeader.magic = 'qoif'); // Just check magic number
     end;
@@ -127,7 +127,7 @@ begin
      px.a:=255;
 
      {initalize previosly seen pixel array}
-     //fillchar(arr,sizeof(arr),0);
+     FillQWord(arr,sizeof(arr) div sizeof(QWord),0);
      iA:=QoiPixelIndex(px);
      //for iA:=0 to 63 do
      arr[iA]:=px;

+ 5 - 5
packages/fcl-image/src/fpwriteqoi.pas

@@ -75,16 +75,16 @@ begin
     end;
 
   {$IFDEF ENDIAN_LITTLE}
-  QoiHeader.width:=Swap32(QoiHeader.width);
-  QoiHeader.height:=Swap32(QoiHeader.height);
+  QoiHeader.width:=SwapEndian(QoiHeader.width);
+  QoiHeader.height:=SwapEndian(QoiHeader.height);
   {$ENDIF}
 
   //writeln('Save width 2 ',QoiHeader.width, '   height  ', QoiHeader.height);
   Stream.Write(QoiHeader,sizeof(TQoiHeader));
 
   {$IFDEF ENDIAN_LITTLE}
-  QoiHeader.width:=Swap32(QoiHeader.width);
-  QoiHeader.height:=Swap32(QoiHeader.height);
+  QoiHeader.width:=SwapEndian(QoiHeader.width);
+  QoiHeader.height:=SwapEndian(QoiHeader.height);
   {$ENDIF}
   Result:=true;
 end;
@@ -123,7 +123,7 @@ begin
     px.a:=255;
 
     {initalize previosly seen pixel array}
-    fillchar(arr,sizeof(arr),0);
+    FillQWord(arr,sizeof(arr) div sizeof(QWord),0);
     iA:=QoiPixelIndex(px);
      //for iA:=0 to 63 do
      //arr[iA]:=px;

+ 0 - 14
packages/fcl-image/src/qoicomn.pas

@@ -38,28 +38,14 @@ type  PQoiPixel = ^TQoiPixel;
 const qoChannelRGB  = 3;
       qoChannelRGBA = 4;
 
-function swap32 (a : dword):dword;
 function QoiPixelIndex (px : TQoiPixel):dword;
 
 implementation
 
-function swap32 (a : dword):dword;
-var h, l : dword;
-begin
-     a:=roldword(a,16);
-     h:=a shr 8;
-     h:= h and $ff00ff;
-     l:= a and $ff00ff;
-     l:= l shl 8;
-
-     swap32:=h or l;
-end;
-
 function QoiPixelIndex (px : TQoiPixel):dword;
 begin
      QoiPixelIndex:= (dword(px.r)*3+dword(px.g)*5+dword(px.b)*7+dword(px.a)*11) and 63;
 end;
 
 
-
 end.