Forum > FPC development
[CLOSED] Improvement of TFPCustomImage.FindHandlerFromExtension
(1/1)
lagprogramming:
packages/fcl-image/src/fpimage.inc has the following function:
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---class function TFPCustomImage.FindHandlerFromExtension(extension: String ): TIHData;var s : string; r : integer;begin if extension='' then Exit(nil); extension := lowercase (extension); if (extension <> '') and (extension[1] = '.') then delete (extension,1,1); with ImageHandlers do begin r := count-1; s := dumchar + extension + dumchar; while (r >= 0) do begin Result := GetData(r); if (pos(s, dumchar+Result.Fextension+dumchar) <> 0) then Exit; dec (r); end; end; Result := nil;end;The patch at the end of the message changes the above code to
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---class function TFPCustomImage.FindHandlerFromExtension(extension: String ): TIHData;var s : string; r : integer;begin if extension <> '' then begin extension := lowercase (extension); if extension[1] = '.' then delete (extension,1,1); with ImageHandlers do begin r := count-1; s := dumchar + extension + dumchar; while (r >= 0) do begin Result := GetData(r); if (pos(s, dumchar+Result.Fextension+dumchar) <> 0) then Exit; dec (r); end; end; end; Result := nil;end;
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---begin if extension='' then Exit(nil); //CODE Result := nil;end;is changed to
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---begin if extension<>'' then begin //CODE end; Result := nil;end;and after that
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---if (extension <> '') and (extension[1] = '.') thenis replaced with
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---if extension[1] = '.' then
The modified pascal code avoids duplicate nil assignments to function's result and also avoids the duplicate check for a nil(empty) extension variable. Obviously, the compiler produces better code for the modified pascal sources than for the original.
I've tried to keep the original code formatting style, here is the patch.
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---diff --git a/packages/fcl-image/src/fpimage.inc b/packages/fcl-image/src/fpimage.incindex 531c4ec219..b4fb9dac24 100644--- a/packages/fcl-image/src/fpimage.inc+++ b/packages/fcl-image/src/fpimage.inc@@ -274,22 +274,23 @@ class function TFPCustomImage.FindHandlerFromExtension(extension: String var s : string; r : integer; begin- if extension='' then- Exit(nil);- extension := lowercase (extension);- if (extension <> '') and (extension[1] = '.') then- delete (extension,1,1);- with ImageHandlers do+ if extension <> '' then begin- r := count-1;- s := dumchar + extension + dumchar;- while (r >= 0) do- begin- Result := GetData(r);- if (pos(s, dumchar+Result.Fextension+dumchar) <> 0) then- Exit;- dec (r);- end;+ extension := lowercase (extension);+ if extension[1] = '.' then+ delete (extension,1,1);+ with ImageHandlers do+ begin+ r := count-1;+ s := dumchar + extension + dumchar;+ while (r >= 0) do+ begin+ Result := GetData(r);+ if (pos(s, dumchar+Result.Fextension+dumchar) <> 0) then+ Exit;+ dec (r);+ end;+ end; end; Result := nil; end;
Navigation
[0] Message Index