mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-07 10:01:12 +02:00
Tools/icons_to_html: reads image sizes from files (by Roland Hahn)
This commit is contained in:
parent
cb4b896c31
commit
1f76660947
@ -19,8 +19,8 @@
|
||||
<VersionInfo>
|
||||
<UseVersionInfo Value="True"/>
|
||||
<MajorVersionNr Value="1"/>
|
||||
<MinorVersionNr Value="2"/>
|
||||
<StringTable CompanyName="Lazarus and Free Pascal" InternalName="IconTable" LegalCopyright="Lazarus and Free Pascal - Roland Hahn" OriginalFilename="IconTable.exe" ProductName="IconTable" ProductVersion="1.2"/>
|
||||
<MinorVersionNr Value="3"/>
|
||||
<StringTable CompanyName="Lazarus and Free Pascal" InternalName="IconTable" LegalCopyright="Lazarus and Free Pascal - Roland Hahn" OriginalFilename="IconTable.exe" ProductName="IconTable" ProductVersion="1.3"/>
|
||||
</VersionInfo>
|
||||
<BuildModes Count="2" Active="Release">
|
||||
<Item1 Name="Debug" Default="True"/>
|
||||
@ -75,12 +75,13 @@
|
||||
<PackageName Value="LCL"/>
|
||||
</Item3>
|
||||
</RequiredPackages>
|
||||
<Units Count="3">
|
||||
<Units Count="4">
|
||||
<Unit0>
|
||||
<Filename Value="IconTable.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<EditorIndex Value="-1"/>
|
||||
<UsageCount Value="37"/>
|
||||
<CursorPos X="72" Y="22"/>
|
||||
<UsageCount Value="40"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="main.pas"/>
|
||||
@ -89,8 +90,12 @@
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<IsVisibleTab Value="True"/>
|
||||
<CursorPos X="14" Y="12"/>
|
||||
<UsageCount Value="37"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<CursorPos X="25" Y="32"/>
|
||||
<UsageCount Value="40"/>
|
||||
<Bookmarks Count="1">
|
||||
<Item0 X="16" Y="501" ID="1"/>
|
||||
</Bookmarks>
|
||||
<Loaded Value="True"/>
|
||||
<LoadedDesigner Value="True"/>
|
||||
</Unit1>
|
||||
@ -102,126 +107,135 @@
|
||||
<CursorPos X="50" Y="549"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit2>
|
||||
<Unit3>
|
||||
<Filename Value="..\..\..\lazarus-3.0-fpc-3.2.2\fpc\3.2.2\source\packages\fcl-image\src\fpimage.pp"/>
|
||||
<UnitName Value="FPImage"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<TopLine Value="108"/>
|
||||
<CursorPos X="3" Y="96"/>
|
||||
<UsageCount Value="10"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit3>
|
||||
</Units>
|
||||
<JumpHistory Count="30" HistoryIndex="29">
|
||||
<Position1>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="284" TopLine="260"/>
|
||||
<Caret Line="283" TopLine="268"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="317" TopLine="293"/>
|
||||
<Caret Line="284" TopLine="268"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="284" TopLine="260"/>
|
||||
<Caret Line="289" TopLine="268"/>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="232" TopLine="207"/>
|
||||
<Caret Line="292" TopLine="268"/>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="213" Column="10" TopLine="206"/>
|
||||
<Caret Line="294" TopLine="268"/>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="182" TopLine="158"/>
|
||||
<Caret Line="281" TopLine="268"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="491" Column="18" TopLine="467"/>
|
||||
<Caret Line="283" TopLine="268"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="494" Column="43" TopLine="468"/>
|
||||
<Caret Line="284" TopLine="268"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="492" Column="5" TopLine="476"/>
|
||||
<Caret Line="289" TopLine="268"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="488" TopLine="476"/>
|
||||
<Caret Line="292" TopLine="268"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="489" Column="14" TopLine="476"/>
|
||||
<Caret Line="294" Column="10" TopLine="259"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="48" Column="12" TopLine="24"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="286" TopLine="262"/>
|
||||
<Caret Line="23" Column="45"/>
|
||||
</Position13>
|
||||
<Position14>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="233" TopLine="209"/>
|
||||
<Caret Line="47" Column="22" TopLine="18"/>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="214" TopLine="207"/>
|
||||
<Caret Line="500" Column="54" TopLine="489"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="181" TopLine="158"/>
|
||||
<Caret Line="504" Column="21" TopLine="489"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="48" Column="20" TopLine="30"/>
|
||||
<Caret Line="498" TopLine="489"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="436" Column="34" TopLine="412"/>
|
||||
<Caret Line="500" Column="31" TopLine="482"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="486" Column="31" TopLine="462"/>
|
||||
<Caret Line="496" Column="36" TopLine="482"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="438" Column="26" TopLine="414"/>
|
||||
<Caret Line="500" Column="51" TopLine="482"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="437" Column="31" TopLine="414"/>
|
||||
<Caret Line="527" Column="2" TopLine="494"/>
|
||||
</Position21>
|
||||
<Position22>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="436" Column="28" TopLine="414"/>
|
||||
<Caret Line="514" Column="8" TopLine="496"/>
|
||||
</Position22>
|
||||
<Position23>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="225" Column="14" TopLine="201"/>
|
||||
<Caret Line="24" Column="24"/>
|
||||
</Position23>
|
||||
<Position24>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="205" Column="18" TopLine="188"/>
|
||||
</Position24>
|
||||
<Position25>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="33" Column="23"/>
|
||||
<Caret Line="47" Column="15" TopLine="13"/>
|
||||
</Position25>
|
||||
<Position26>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="419" TopLine="395"/>
|
||||
<Caret Line="514" TopLine="497"/>
|
||||
</Position26>
|
||||
<Position27>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="232" TopLine="208"/>
|
||||
<Caret Line="8" Column="29"/>
|
||||
</Position27>
|
||||
<Position28>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="225" Column="5" TopLine="208"/>
|
||||
<Caret Line="197" Column="48" TopLine="168"/>
|
||||
</Position28>
|
||||
<Position29>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="196" TopLine="172"/>
|
||||
<Caret Line="47" Column="15" TopLine="12"/>
|
||||
</Position29>
|
||||
<Position30>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="186" TopLine="172"/>
|
||||
<Caret Line="507" Column="16" TopLine="491"/>
|
||||
</Position30>
|
||||
</JumpHistory>
|
||||
</ProjectOptions>
|
||||
|
@ -9,13 +9,13 @@ object MainForm: TMainForm
|
||||
ClientWidth = 700
|
||||
Constraints.MinHeight = 515
|
||||
Constraints.MinWidth = 700
|
||||
Position = poScreenCenter
|
||||
ShowHint = True
|
||||
LCLVersion = '3.99.0.0'
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
OnDropFiles = FormDropFiles
|
||||
OnShow = FormShow
|
||||
Position = poScreenCenter
|
||||
ShowHint = True
|
||||
LCLVersion = '3.2.0.0'
|
||||
object DirectoryEdit: TDirectoryEdit
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = sbtnLastDirs
|
||||
@ -516,6 +516,8 @@ object MainForm: TMainForm
|
||||
object SynGutterMarks1: TSynGutterMarks
|
||||
Width = 24
|
||||
MouseActions = <>
|
||||
MaxExtraMarksColums = 0
|
||||
Options = [sgmoDeDuplicateMarksOnOverflow]
|
||||
end
|
||||
object SynGutterLineNumber1: TSynGutterLineNumber
|
||||
Width = 15
|
||||
@ -596,9 +598,9 @@ object MainForm: TMainForm
|
||||
Caption = 'Close'
|
||||
Images = ImageList
|
||||
ImageIndex = 6
|
||||
OnClick = bbtnCloseClick
|
||||
Spacing = 5
|
||||
TabOrder = 6
|
||||
OnClick = bbtnCloseClick
|
||||
end
|
||||
object bbtnSave: TBitBtn
|
||||
AnchorSideTop.Control = bbtnClose
|
||||
@ -616,9 +618,9 @@ object MainForm: TMainForm
|
||||
Enabled = False
|
||||
Images = ImageList
|
||||
ImageIndex = 5
|
||||
OnClick = bbtnSaveClick
|
||||
Spacing = 5
|
||||
TabOrder = 5
|
||||
OnClick = bbtnSaveClick
|
||||
end
|
||||
object bbtnCreateHTML: TBitBtn
|
||||
AnchorSideTop.Control = bbtnPreview
|
||||
@ -637,9 +639,9 @@ object MainForm: TMainForm
|
||||
Enabled = False
|
||||
Images = ImageList
|
||||
ImageIndex = 3
|
||||
OnClick = bbtnCreateHTMLClick
|
||||
Spacing = 5
|
||||
TabOrder = 3
|
||||
OnClick = bbtnCreateHTMLClick
|
||||
end
|
||||
object bbtnPreview: TBitBtn
|
||||
AnchorSideTop.Control = bbtnSave
|
||||
@ -655,12 +657,13 @@ object MainForm: TMainForm
|
||||
Enabled = False
|
||||
Images = ImageList
|
||||
ImageIndex = 4
|
||||
OnClick = bbtnPreviewClick
|
||||
TabOrder = 4
|
||||
OnClick = bbtnPreviewClick
|
||||
end
|
||||
object TaskDialog: TTaskDialog
|
||||
Buttons = <>
|
||||
RadioButtons = <>
|
||||
QueryItemIndex = 0
|
||||
Left = 96
|
||||
Top = 64
|
||||
end
|
||||
|
@ -5,7 +5,7 @@ unit main;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Forms, Controls, Dialogs, StdCtrls, EditBtn, FileUtil,
|
||||
Classes, SysUtils, Forms, FPImage, Controls, Dialogs, StdCtrls, EditBtn, FileUtil,
|
||||
LazUTF8, LazFileUtils, LCLIntf, LCLType, Buttons, Menus, IniFiles,
|
||||
SynEdit, SynHighlighterHTML;
|
||||
|
||||
@ -44,6 +44,7 @@ type
|
||||
procedure CreateHTML(HTMLLines: TStrings; Preview: Boolean);
|
||||
procedure ShowMsg(const AMsgCaption: String; const AMsg: String);
|
||||
procedure UpdateLastDirs(ImgDir: String; Delete: Boolean);
|
||||
procedure GetPixSize(FileName: String; var PixWidth: Integer; var PixHeight: Integer);
|
||||
public
|
||||
|
||||
end;
|
||||
@ -241,6 +242,8 @@ var
|
||||
IcoFile: String;
|
||||
IcoSize: String;
|
||||
IcoName: String;
|
||||
IcoWidth: Integer = 0;
|
||||
IcoHeight: Integer = 0;
|
||||
DPos: Integer;
|
||||
IntDummy: Integer;
|
||||
i: Integer;
|
||||
@ -273,16 +276,14 @@ begin
|
||||
for i := 0 to AllFileList.Count - 1 do
|
||||
begin
|
||||
IcoFile := ChangeFileExt(ExtractFileName(AllFileList.Strings[i]), '');
|
||||
GetPixSize(AllFileList.Strings[i], IcoWidth, IcoHeight);
|
||||
IcoSize := IntToStr(IcoWidth);
|
||||
|
||||
DPos := LastDelimiter('_', IcoFile);
|
||||
IcoSize := RightStr(IcoFile, Utf8Length(IcoFile) - DPos);
|
||||
|
||||
if not TryStrToInt(IcoSize, IntDummy) then
|
||||
IcoSize := '';
|
||||
|
||||
if IcoSize = '' then
|
||||
IcoName := IcoFile
|
||||
if TryStrToInt(RightStr(IcoFile, Utf8Length(IcoFile) - DPos), IntDummy) then
|
||||
IcoName := Utf8Copy(IcoFile, 1, DPos - 1)
|
||||
else
|
||||
IcoName := Utf8Copy(IcoFile, 1, DPos - 1);
|
||||
IcoName := IcoFile;
|
||||
|
||||
if Preview then
|
||||
IcoFileList.Add('file:///' + ImgDirectory + IcoFile)
|
||||
@ -334,7 +335,7 @@ begin
|
||||
HTMLLines.Add('<table>');
|
||||
HTMLLines.Add(' <tr class="no_border">');
|
||||
HTMLLines.Add(' <td class="colorset1 right_border"></td>');
|
||||
HTMLLines.Add(' <td class="colorset2 text_center" colspan="' + PixSizeList.Count.ToString + '">Appendix</td>');
|
||||
HTMLLines.Add(' <td class="colorset2 text_center" colspan="' + PixSizeList.Count.ToString + '">Size</td>');
|
||||
HTMLLines.Add(' </tr>');
|
||||
HTMLLines.Add(' <tr>');
|
||||
HTMLLines.Add(' <td class="colorset1 right_border">Name</td>');
|
||||
@ -489,6 +490,24 @@ begin
|
||||
Result := '';
|
||||
end;
|
||||
|
||||
procedure TMainForm.GetPixSize(FileName: String; var PixWidth: Integer; var PixHeight: Integer);
|
||||
var
|
||||
stream: TStream;
|
||||
reader: TFPCustomImageReaderClass;
|
||||
begin
|
||||
stream := TFileStream.Create(FileName, fmOpenRead + fmShareDenyWrite);
|
||||
try
|
||||
reader := TFPCustomImage.FindReaderFromStream(stream);
|
||||
with reader.ImageSize(stream) do
|
||||
begin
|
||||
PixWidth := X;
|
||||
PixHeight := Y;
|
||||
end;
|
||||
finally
|
||||
stream.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function CustomSortProc(List: TStringList; X1, X2: Integer): Integer;
|
||||
var
|
||||
P1, P2: Integer;
|
||||
|
Loading…
Reference in New Issue
Block a user