aboutsummaryrefslogtreecommitdiffstats
path: root/Game/Code/Classes/Ulazjpeg.pas
diff options
context:
space:
mode:
authormogguh <mogguh@b956fd51-792f-4845-bead-9b4dfca2ff2c>2008-02-13 19:58:44 +0000
committermogguh <mogguh@b956fd51-792f-4845-bead-9b4dfca2ff2c>2008-02-13 19:58:44 +0000
commit949fea202f6c963ad6c8a40040e1e9e6f909161b (patch)
tree9f6f683d203d55e41e5b7483b4038103d471ce76 /Game/Code/Classes/Ulazjpeg.pas
parent1a7da68ae6e1368dae25821b15318bd1d2d9f88e (diff)
parentefe5b06fd5715f550334692d28c2218896b62ce1 (diff)
downloadusdx-949fea202f6c963ad6c8a40040e1e9e6f909161b.tar.gz
usdx-949fea202f6c963ad6c8a40040e1e9e6f909161b.tar.xz
usdx-949fea202f6c963ad6c8a40040e1e9e6f909161b.zip
First multi platform version, works on Linux and Windows
git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.1@855 b956fd51-792f-4845-bead-9b4dfca2ff2c
Diffstat (limited to 'Game/Code/Classes/Ulazjpeg.pas')
-rw-r--r--Game/Code/Classes/Ulazjpeg.pas151
1 files changed, 151 insertions, 0 deletions
diff --git a/Game/Code/Classes/Ulazjpeg.pas b/Game/Code/Classes/Ulazjpeg.pas
new file mode 100644
index 00000000..2414002c
--- /dev/null
+++ b/Game/Code/Classes/Ulazjpeg.pas
@@ -0,0 +1,151 @@
+{ Copyright (C) 2003 Mattias Gaertner
+
+ This library is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Library General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ 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. See the GNU Library General Public License
+ for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+}
+unit Ulazjpeg;
+
+{$mode delphi}
+
+{$I switches.inc}
+
+interface
+
+uses
+ SysUtils, Classes, FPImage, IntfGraphics, Graphics, FPReadJPEG, FPWriteJPEG,
+ UConfig;
+
+type
+ TJPEGQualityRange = TFPJPEGCompressionQuality;
+ TJPEGPerformance = TJPEGReadPerformance;
+
+ TJPEGImage = class(TFPImageBitmap)
+ private
+ FPerformance: TJPEGPerformance;
+ FProgressiveEncoding: boolean;
+ FQuality: TJPEGQualityRange;
+ protected
+{$IF LAZARUS_VERSION >= 000009024} // 0.9.24
+ procedure InitFPImageReader(IntfImg: TLazIntfImage; ImgReader: TFPCustomImageReader); override;
+{$ELSE}
+ procedure InitFPImageReader(ImgReader: TFPCustomImageReader); override;
+{$IFEND}
+ procedure FinalizeFPImageReader(ImgReader: TFPCustomImageReader); override;
+{$IF LAZARUS_VERSION >= 000009024} // 0.9.24
+ procedure InitFPImageWriter(IntfImg: TLazIntfImage; ImgWriter: TFPCustomImageWriter); override;
+{$ELSE}
+ procedure InitFPImageWriter(ImgWriter: TFPCustomImageWriter); override;
+{$IFEND}
+ public
+ constructor Create; override;
+ class function GetFileExtensions: string; override;
+ class function GetDefaultFPReader: TFPCustomImageReaderClass; override;
+ class function GetDefaultFPWriter: TFPCustomImageWriterClass; override;
+ public
+ property CompressionQuality: TJPEGQualityRange read FQuality write FQuality;
+ property ProgressiveEncoding: boolean read FProgressiveEncoding;
+ property Performance: TJPEGPerformance read FPerformance write FPerformance;
+ end;
+
+const
+ DefaultJPEGMimeType = 'image/jpeg';
+
+
+implementation
+
+
+{ TJPEGImage }
+
+{$IF LAZARUS_VERSION >= 000009024} // 0.9.24
+procedure TJPEGImage.InitFPImageReader(IntfImg: TLazIntfImage; ImgReader: TFPCustomImageReader);
+{$ELSE}
+procedure TJPEGImage.InitFPImageReader(ImgReader: TFPCustomImageReader);
+{$IFEND}
+var
+ JPEGReader: TFPReaderJPEG;
+begin
+ if ImgReader is TFPReaderJPEG then begin
+ JPEGReader:=TFPReaderJPEG(ImgReader);
+ JPEGReader.Performance:=Performance;
+{$IF LAZARUS_VERSION >= 000009024} // 0.9.24
+ JPEGReader.OnProgress:=Progress;
+{$IFEND}
+ end;
+{$IF LAZARUS_VERSION >= 000009024} // 0.9.24
+ inherited InitFPImageReader(IntfImg, ImgReader);
+{$ELSE}
+ inherited InitFPImageReader(ImgReader);
+{$IFEND}
+end;
+
+procedure TJPEGImage.FinalizeFPImageReader(ImgReader: TFPCustomImageReader);
+var
+ JPEGReader: TFPReaderJPEG;
+begin
+ if ImgReader is TFPReaderJPEG then begin
+ JPEGReader:=TFPReaderJPEG(ImgReader);
+ FProgressiveEncoding:=JPEGReader.ProgressiveEncoding;
+ end;
+ inherited FinalizeFPImageReader(ImgReader);
+end;
+
+{$IF LAZARUS_VERSION >= 000009024} // 0.9.24
+procedure TJPEGImage.InitFPImageWriter(IntfImg: TLazIntfImage; ImgWriter: TFPCustomImageWriter);
+{$ELSE}
+procedure TJPEGImage.InitFPImageWriter(ImgWriter: TFPCustomImageWriter);
+{$IFEND}
+var
+ JPEGWriter: TFPWriterJPEG;
+begin
+ if ImgWriter is TFPWriterJPEG then begin
+ JPEGWriter:=TFPWriterJPEG(ImgWriter);
+ if JPEGWriter<>nil then ;
+ JPEGWriter.ProgressiveEncoding:=ProgressiveEncoding;
+ JPEGWriter.CompressionQuality:=CompressionQuality;
+{$IF LAZARUS_VERSION >= 000009024} // 0.9.24
+ JPEGWriter.OnProgress:=Progress;
+{$IFEND}
+ end;
+{$IF LAZARUS_VERSION >= 000009024} // 0.9.24
+ inherited InitFPImageWriter(IntfImg, ImgWriter);
+{$ELSE}
+ inherited InitFPImageWriter(ImgWriter);
+{$IFEND}
+end;
+
+class function TJPEGImage.GetDefaultFPReader: TFPCustomImageReaderClass;
+begin
+ Result:=TFPReaderJPEG;
+end;
+
+class function TJPEGImage.GetDefaultFPWriter: TFPCustomImageWriterClass;
+begin
+ Result:=TFPWriterJPEG;
+end;
+
+constructor TJPEGImage.Create;
+begin
+ inherited Create;
+ FPerformance:=jpBestQuality;
+ FProgressiveEncoding:=false;
+ FQuality:=75;
+end;
+
+class function TJPEGImage.GetFileExtensions: string;
+begin
+ Result:='jpg;jpeg';
+end;
+
+end.
+