Skip to content

Commit 8dcc7df

Browse files
Updated files
1 parent 5e096ee commit 8dcc7df

9 files changed

Lines changed: 954 additions & 79 deletions

File tree

Lazarus Source/BigImageUnit.lfm

100644100755
File mode changed.

Lazarus Source/BigImageUnit.pas

100644100755
File mode changed.

Lazarus Source/MainUnit.lfm

100644100755
Lines changed: 716 additions & 17 deletions
Large diffs are not rendered by default.

Lazarus Source/MainUnit.pas

100644100755
Lines changed: 108 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,41 @@ interface
2929

3030
uses
3131
Controls,SysUtils,ExtCtrls,StdCtrls,Forms,Buttons,LCLType,Dialogs,
32-
Classes,Graphics,FPImage,IntfGraphics,ComCtrls,SpriteFile,Global;
32+
Classes,Graphics,FPImage,IntfGraphics,ComCtrls, Menus,SpriteFile,Global, Types;
3333

3434
type
3535

3636
{ TMainForm }
3737

3838
TMainForm = class(TForm)
3939
edRenameSprite: TEdit;
40+
AppMenu: TMainMenu;
4041
MainSpritePanel: TPanel;
42+
FileMenu: TMenuItem;
43+
menuClosePool: TMenuItem;
44+
menuImportImage: TMenuItem;
45+
menuDeleteSprite: TMenuItem;
46+
MenuItem1: TMenuItem;
47+
menuAbout: TMenuItem;
48+
contRenameSprite: TMenuItem;
49+
contDeleteSprite: TMenuItem;
50+
contSavePalette: TMenuItem;
51+
MenuItem3: TMenuItem;
52+
contConvertSprite: TMenuItem;
53+
menuConvertSprite: TMenuItem;
54+
menuOptions: TMenuItem;
55+
ContextMenu: TPopupMenu;
56+
btnConvertSprite: TToolButton;
57+
ToolMenu: TMenuItem;
58+
menuSavePalette: TMenuItem;
59+
menuSaveSprite: TMenuItem;
60+
menuSaveAsPNG: TMenuItem;
61+
menuSaveAsBMP: TMenuItem;
62+
menuSaveAsBMPPNG: TMenuItem;
63+
MenuItem2: TMenuItem;
64+
menuRenameSprite: TMenuItem;
65+
SpriteMenu: TMenuItem;
66+
menuOpenFile: TMenuItem;
4167
StatusBarImages: TImageList;
4268
Texture: TImage;
4369
MainToolBarImages: TImageList;
@@ -67,6 +93,7 @@ TMainForm = class(TForm)
6793
btnDeleteSprite: TToolButton;
6894
procedure btnAboutClick(Sender: TObject);
6995
procedure btnCloseFileClick(Sender: TObject);
96+
procedure btnConvertSpriteClick(Sender: TObject);
7097
procedure btnDeleteSpriteClick(Sender: TObject);
7198
procedure btnImportImageClick(Sender: TObject);
7299
procedure btnOptionsClick(Sender: TObject);
@@ -87,6 +114,7 @@ TMainForm = class(TForm)
87114
procedure sb_OpenFileClick(Sender: TObject);
88115
procedure CloseSpriteFile;
89116
procedure LoadAFile(filename: String);
117+
procedure ContextPopup(Sender: TObject; MousePos: TPoint;var Handled: Boolean);
90118
procedure UpdateStatusBar;
91119
procedure ArrangeSprites;
92120
procedure FormCreate(Sender: TObject);
@@ -117,7 +145,7 @@ TMainForm = class(TForm)
117145
SpriteList: TSpriteFile; //The container for the sprites
118146
const
119147
AppTitle = 'Sprite Converter';
120-
AppVersion = '1.03';
148+
AppVersion = '1.04';
121149
procedure AfterConstruction; override;
122150
end;
123151

@@ -191,6 +219,8 @@ procedure TMainForm.Image1DblClick(Sender: TObject);
191219
x:=TImage(Sender).Tag;
192220
if Sender is TLabel then
193221
x:=TLabel(Sender).Tag;
222+
//Deselect any that are selected
223+
if select=x then Image1Click(image[x]);
194224
//Read the sprite
195225
sprite:=SpriteList.ReadSprite(x);
196226
//Now we can populate the big image in the dialogue
@@ -356,8 +386,8 @@ procedure TMainForm.LoadAFile(filename: String);
356386
SetLength(spritepal,SpriteList.SpriteCount);
357387
//Initial image position on the form - this will change
358388
ix:=4;
359-
wide:=0; //We need to work out the widest sprite
360-
tall:=0; //And the tallest
389+
// wide:=0; //We need to work out the widest sprite
390+
// tall:=0; //And the tallest
361391
for x:=oldCount to SpriteList.SpriteCount-1 do
362392
begin
363393
//Display it
@@ -388,17 +418,30 @@ procedure TMainForm.LoadAFile(filename: String);
388418
if SpriteList.SpriteCount>0 then
389419
begin
390420
//Enable the controls
391-
btnSaveAsBMPPNG.Enabled:=True;
392-
btnSaveAsBMP.Enabled :=True;
393-
btnSaveAsPNG.Enabled :=True;
394-
btnSaveSprite.Enabled :=True;
421+
btnSaveAsBMPPNG.Enabled :=True;
422+
menuSaveAsBMPPNG.Enabled:=True;
423+
btnSaveAsBMP.Enabled :=True;
424+
menuSaveAsBMP.Enabled :=True;
425+
btnSaveAsPNG.Enabled :=True;
426+
menuSaveAsPNG.Enabled :=True;
427+
btnSaveSprite.Enabled :=True;
428+
menuSaveSprite.Enabled :=True;
395429
//Update the status bar
396430
UpdateStatusBar;
397431
//Allow re-arranging
398432
sprload:=False;
399433
end;
400434
end;
401435

436+
{------------------------------------------------------------------------------}
437+
//Middle button (two finger on mac touchpad) has been clicked
438+
{------------------------------------------------------------------------------}
439+
procedure TMainForm.ContextPopup(Sender: TObject; MousePos: TPoint;
440+
var Handled: Boolean);
441+
begin
442+
Image1Click(Sender);
443+
end;
444+
402445
{------------------------------------------------------------------------------}
403446
//Update the status bar
404447
{------------------------------------------------------------------------------}
@@ -525,6 +568,14 @@ procedure TMainForm.btnCloseFileClick(Sender: TObject);
525568
If QueryUnSaved then CloseSpriteFile;
526569
end;
527570

571+
{------------------------------------------------------------------------------}
572+
//Convert a sprite
573+
{------------------------------------------------------------------------------}
574+
procedure TMainForm.btnConvertSpriteClick(Sender: TObject);
575+
begin
576+
//Convert a sprite: colour depth; OS compatibility; mask type; mode data
577+
end;
578+
528579
{------------------------------------------------------------------------------}
529580
//Delete a sprite
530581
{------------------------------------------------------------------------------}
@@ -720,6 +771,16 @@ procedure TMainForm.DisableButtons;
720771
btnSavePalette.Enabled :=False;
721772
btnRenameSprite.Enabled:=False;
722773
btnDeleteSprite.Enabled:=False;
774+
menuSaveAsBMPPNG.Enabled:=False;
775+
menuSaveAsBMP.Enabled :=False;
776+
menuSaveAsPNG.Enabled :=False;
777+
menuSaveSprite.Enabled :=False;
778+
menuSavePalette.Enabled :=False;
779+
menuRenameSprite.Enabled:=False;
780+
menuDeleteSprite.Enabled:=False;
781+
contSavePalette.Enabled :=False;
782+
contRenameSprite.Enabled:=False;
783+
contDeleteSprite.Enabled:=False;
723784
end;
724785

725786
{------------------------------------------------------------------------------}
@@ -743,6 +804,9 @@ procedure TMainForm.FormShow(Sender: TObject);
743804
//Sprite thumbnails
744805
thumbnailwidth :=Round(32*Screen.PixelsPerInch/96);
745806
thumbnailheight:=Round(32*Screen.PixelsPerInch/96);
807+
//widest and tallest
808+
wide:=Round(thumbnailwidth*2.5);
809+
tall:=Round(thumbnailheight*2);
746810
end;
747811

748812
{------------------------------------------------------------------------------}
@@ -779,18 +843,30 @@ procedure TMainForm.Image1Click(Sender: TObject);
779843
spritename[x].Color:=clBlue;
780844
spritename[x].Font.Color:=clWhite;
781845
select:=x;
782-
btnSavePalette.Enabled:=spritepal[select];
783-
btnRenameSprite.Enabled:=True;
784-
btnDeleteSprite.Enabled:=True;
846+
btnSavePalette.Enabled :=spritepal[select];
847+
menuSavePalette.Enabled :=spritepal[select];
848+
contSavePalette.Enabled :=spritepal[select];
849+
btnRenameSprite.Enabled :=True;
850+
btnDeleteSprite.Enabled :=True;
851+
menuRenameSprite.Enabled:=True;
852+
menuDeleteSprite.Enabled:=True;
853+
contRenameSprite.Enabled:=True;
854+
contDeleteSprite.Enabled:=True;
785855
end
786856
else
787857
if(x=select)and(x>=0)and(edit)then btnRenameSpriteClick(Sender)
788858
else
789859
begin
790860
select:=-1; //Or mark as deselected
791-
btnSavePalette.Enabled:=False;
792-
btnRenameSprite.Enabled:=False;
793-
btnDeleteSprite.Enabled:=False;
861+
btnSavePalette.Enabled :=False;
862+
btnRenameSprite.Enabled :=False;
863+
btnDeleteSprite.Enabled :=False;
864+
menuSavePalette.Enabled :=False;
865+
menuRenameSprite.Enabled:=False;
866+
menuDeleteSprite.Enabled:=False;
867+
contSavePalette.Enabled :=False;
868+
contRenameSprite.Enabled:=False;
869+
contDeleteSprite.Enabled:=False;
794870
end;
795871
end;
796872

@@ -839,6 +915,16 @@ procedure TMainForm.sb_SaveClick(Sender: TObject);
839915
if TToolButton(Sender).Name='btnSaveAsBMP' then bmp:=True;
840916
if TToolButton(Sender).Name='btnSaveAsPNG' then png:=True;
841917
end;
918+
if Sender is TMenuItem then
919+
begin
920+
if TMenuItem(Sender).Name='menuSaveAsBMPPNG' then
921+
begin
922+
png:=True;
923+
bmp:=True;
924+
end;
925+
if TMenuItem(Sender).Name='menuSaveAsBMP' then bmp:=True;
926+
if TMenuItem(Sender).Name='menuSaveAsPNG' then png:=True;
927+
end;
842928
//Are there actually any sprites?
843929
if SpriteList.SpriteCount>0 then
844930
begin
@@ -898,12 +984,16 @@ procedure TMainForm.CreateSpriteControl(sprite,x,y: Integer);
898984
spritename[sprite].Left:=x+(((thumbnailwidth*2)-spritename[sprite].Width)div 2);
899985
spritename[sprite].OnDblClick:=@Image1DblClick;
900986
spritename[sprite].OnClick:=@Image1Click;
987+
spritename[sprite].OnContextPopup:=@ContextPopup;
988+
spritename[sprite].PopupMenu:=ContextMenu;
901989
spritename[sprite].Tag:=sprite; //For reference later
902990
//Create and populate the sprite image control
903991
image[sprite]:=TImage.Create(MainSpritePanel as TComponent);
904992
image[sprite].Parent:=MainSpritePanel as TWinControl;
905993
image[sprite].OnDblClick:=@Image1DblClick;
906994
image[sprite].OnClick:=@Image1Click;
995+
image[sprite].OnContextPopup:=@ContextPopup;
996+
image[sprite].PopupMenu:=ContextMenu;
907997
image[sprite].Tag:=sprite;
908998
image[sprite].Visible:=True;
909999
image[sprite].Stretch:=True;
@@ -915,11 +1005,11 @@ procedure TMainForm.CreateSpriteControl(sprite,x,y: Integer);
9151005
image[sprite].Height:=thumbnailheight;
9161006
image[sprite].Hint:=spritedata.Name;
9171007
//Take note if it is the widest so far seen
918-
if spritename[sprite].Width>wide then wide:=spritename[sprite].Width;
919-
if image[sprite].Width>wide then wide:=image[sprite].Width;
1008+
{ if spritename[sprite].Width>wide then wide:=spritename[sprite].Width;
1009+
if image[sprite].Width>wide then wide:=image[sprite].Width;}
9201010
//They're all the same height
921-
if tall=0 then
922-
tall:=((spritename[sprite].Top+spritename[sprite].Height)-image[sprite].Top);
1011+
{ if tall=0 then
1012+
tall:=((spritename[sprite].Top+spritename[sprite].Height)-image[sprite].Top);}
9231013
//Hide them, until later
9241014
spritename[sprite].Visible:=False;
9251015
image[sprite].Visible:=False;

Lazarus Source/SettingsUnit.lfm

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
object SettingsForm: TSettingsForm
22
Left = 525
3-
Height = 114
3+
Height = 160
44
Top = 286
5-
Width = 291
5+
Width = 470
66
AutoSize = True
77
BorderIcons = [biSystemMenu]
88
BorderStyle = bsDialog
99
Caption = 'Options'
10-
ClientHeight = 114
11-
ClientWidth = 291
10+
ClientHeight = 160
11+
ClientWidth = 470
1212
Color = 15527148
1313
Position = poMainFormCenter
1414
LCLVersion = '2.0.12.0'
1515
object OSGroupBox: TGroupBox
1616
Left = 0
17-
Height = 84
17+
Height = 85
1818
Top = 0
19-
Width = 288
19+
Width = 470
2020
AutoSize = True
2121
Caption = 'OS Compatibility'
2222
ClientHeight = 66
23-
ClientWidth = 280
23+
ClientWidth = 460
2424
Color = 15527148
2525
ParentColor = False
2626
TabOrder = 0
@@ -46,8 +46,8 @@ object SettingsForm: TSettingsForm
4646
Left = 0
4747
Height = 18
4848
Top = 48
49-
Width = 265
50-
Caption = 'RISC OS 3.50+ (16 and 32bpp, 1bpp mask)'
49+
Width = 460
50+
Caption = 'RISC OS 3.50+ (16 and 32bpp, 1bpp mask; Alpha masks from RISC OS 4.39+)'
5151
Checked = True
5252
Color = clNone
5353
ParentColor = False
@@ -58,7 +58,7 @@ object SettingsForm: TSettingsForm
5858
object SaveButton: TSpeedButton
5959
Left = 8
6060
Height = 21
61-
Top = 88
61+
Top = 96
6262
Width = 54
6363
AutoSize = True
6464
Caption = 'Save'
@@ -71,7 +71,7 @@ object SettingsForm: TSettingsForm
7171
object CancelButton: TSpeedButton
7272
Left = 112
7373
Height = 21
74-
Top = 88
74+
Top = 96
7575
Width = 67
7676
AutoSize = True
7777
Caption = 'Cancel'

0 commit comments

Comments
 (0)