From 2ea4de6d2b86304461f628755e55c7f2f1600f91 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Tue, 27 Apr 2021 14:48:09 +0000 Subject: [PATCH] fpexif: Continue reading jpg when unexpected EXIF segment is found. Show built-in shell icons in metadata viewer. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8003 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../examples/metadata_viewer/mdvmain.lfm | 6 ++---- .../examples/metadata_viewer/mdvmain.pas | 6 +++++- components/fpexif/fpemetadata.pas | 20 +++++++++---------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/components/fpexif/examples/metadata_viewer/mdvmain.lfm b/components/fpexif/examples/metadata_viewer/mdvmain.lfm index d67fbbeaf..f0856e7b9 100644 --- a/components/fpexif/examples/metadata_viewer/mdvmain.lfm +++ b/components/fpexif/examples/metadata_viewer/mdvmain.lfm @@ -29,7 +29,6 @@ object MainForm: TMainForm Align = alTop FileSortType = fstFoldersFirst HideSelection = False - Images = ImageList ReadOnly = True TabOrder = 0 OnGetImageIndex = ShellTreeViewGetImageIndex @@ -58,7 +57,6 @@ object MainForm: TMainForm HideSelection = False Mask = '*.jpg;*.jpeg;*.jpe;*.tiff;*.tif' ReadOnly = True - SmallImages = ImageList SortColumn = 0 TabOrder = 2 OnSelectItem = ShellListViewSelectItem @@ -363,8 +361,8 @@ object MainForm: TMainForm SimplePanel = False end object ImageList: TImageList - left = 89 - top = 118 + Left = 89 + Top = 118 Bitmap = { 4C7A0300000010000000100000009E0200000000000078DAEDD6DD4F52611CC0 712EBAE80FE81FE81FE8A69BAE9A372D7BD1B5B979916B6B8A446B85DA666CCE diff --git a/components/fpexif/examples/metadata_viewer/mdvmain.pas b/components/fpexif/examples/metadata_viewer/mdvmain.pas index 977009447..a035f591b 100644 --- a/components/fpexif/examples/metadata_viewer/mdvmain.pas +++ b/components/fpexif/examples/metadata_viewer/mdvmain.pas @@ -78,7 +78,7 @@ implementation {$R *.lfm} uses - LCLType, IniFiles, Math, StrUtils, DateUtils, IntfGraphics, + LCLType, LCLVersion, IniFiles, Math, StrUtils, DateUtils, IntfGraphics, fpeTags, fpeExifData, fpeIptcData; const @@ -178,6 +178,10 @@ end; procedure TMainForm.FormCreate(Sender: TObject); begin + {$IF LCL_FullVersion < 2010000} + ShellListView.SmallImages := ImageList; + ShellTreeView.Images := ImageList; + {$ENDIF} //ShellListView.Parent.DoubleBuffered := true; end; diff --git a/components/fpexif/fpemetadata.pas b/components/fpexif/fpemetadata.pas index 6f986fad4..143ae923f 100644 --- a/components/fpexif/fpemetadata.pas +++ b/components/fpexif/fpemetadata.pas @@ -526,16 +526,16 @@ begin if FMetaDataKinds * [mdkExif, mdkExifNoMakerNotes] <> [] then begin reader := TExifReader.Create(self); try - if not TExifReader(reader).ReadExifHeader(AStream) then - exit; - if not TExifReader(reader).ReadTiffHeader(AStream, bigEndian) then - exit; - FExifData := CreateExifData(bigEndian); - try - reader.ReadFromStream(AStream, ifJpeg); - except - FreeAndNil(FExifData); - raise; + if TExifReader(reader).ReadExifHeader(AStream) and + TExifReader(reader).ReadTiffHeader(AStream, bigEndian) then + begin + FExifData := CreateExifData(bigEndian); + try + reader.ReadFromStream(AStream, ifJpeg); + except + FreeAndNil(FExifData); + raise; + end; end; finally reader.Free;