IDEIntf: image list editor: implemented auto splitting added image from etrusco

git-svn-id: trunk@9997 -
This commit is contained in:
mattias 2006-09-27 19:30:22 +00:00
parent d3a7eb61d5
commit 008cfe9546
3 changed files with 57 additions and 15 deletions

View File

@ -117,7 +117,7 @@ begin
Result:=rsLanguageDutch Result:=rsLanguageDutch
else if CompareText(ID,'ja')=0 then else if CompareText(ID,'ja')=0 then
Result:=rsLanguageJapanese Result:=rsLanguageJapanese
else if CompareText(ID,'zh-cn')=0 then else if CompareText(ID,'zh_CN')=0 then
Result:=rsLanguageChinese Result:=rsLanguageChinese
else if CompareText(ID,'id')=0 then else if CompareText(ID,'id')=0 then
Result:=rsLanguageIndonesian Result:=rsLanguageIndonesian

View File

@ -34,8 +34,8 @@ interface
uses uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, LResources, ComCtrls, Classes, SysUtils, Forms, Controls, Graphics, Dialogs, LResources, ComCtrls,
StdCtrls, Buttons, ExtCtrls, Menus, PropEdits, ComponentEditors, LCLProc, StdCtrls, Buttons, ExtCtrls, Menus, LCLProc, ColorBox, ExtDlgs,
ColorBox, ExtDlgs, ObjInspStrConsts; IDEDialogs, PropEdits, ComponentEditors, ObjInspStrConsts;
type type
TGlyphAdjustment = (gaNone, gaStretch, gaCrop, gaCenter); TGlyphAdjustment = (gaNone, gaStretch, gaCrop, gaCenter);
@ -110,8 +110,10 @@ type
function GetVerbCount: Integer; override; function GetVerbCount: Integer; override;
end; end;
implementation implementation
function EditImageList(AImageList: TImageList): Boolean; function EditImageList(AImageList: TImageList): Boolean;
var var
ImageListEditorDlg: TImageListEditorDlg; ImageListEditorDlg: TImageListEditorDlg;
@ -156,6 +158,15 @@ begin
end; end;
end; end;
function CreateGlyphSplit(Src: TBitmap; Width, Height: Integer; SrcSplitIndex: Integer): TBitmap;
begin
Result := TBitmap.Create;
Result.Width := Width;
Result.Height := Height;
Result.Canvas.CopyRect( Rect(0, 0, Width, Height),
Src.Canvas, Bounds(SrcSplitIndex * Width, 0, Width, Height) );
end;
{ TImageListEditorDlg } { TImageListEditorDlg }
procedure TImageListEditorDlg.FormCreate(Sender: TObject); procedure TImageListEditorDlg.FormCreate(Sender: TObject);
@ -469,6 +480,9 @@ var
Picture: TPicture; Picture: TPicture;
P: PGlyphInfo; P: PGlyphInfo;
Node: TTreeNode; Node: TTreeNode;
v_PartCount: Integer;
c_Part: Integer;
v_CompositeBmp: TBitmap;
begin begin
SaveDialog.InitialDir := ExtractFileDir(FileName); SaveDialog.InitialDir := ExtractFileDir(FileName);
Bmp := nil; Bmp := nil;
@ -487,18 +501,40 @@ begin
begin begin
if not Bmp.Empty then if not Bmp.Empty then
begin begin
Glyph := CreateGlyph(Bmp, ImageList.Width, ImageList.Height, gaNone); if (Bmp.Height = ImageList.Height)
I := ImageList.AddDirect(Glyph, nil); and (Bmp.Width mod ImageList.Width = 0)
and (IDEQuestionDialog(Caption +' - '+ btnAdd.Caption,
s_SuggestSplitImage, mtConfirmation,
[s_AddAsSingle, mrNo, s_SplitImage, mrYes]) = mrYes)
then begin
v_PartCount := Bmp.Width div ImageList.Width;
v_CompositeBmp := Bmp;
Bmp := nil;
end
else begin
v_PartCount := 1;
v_CompositeBmp := nil;
end;
New(P); for c_Part := 0 to v_PartCount -1 do
P^.Bitmap := Bmp; begin
P^.Adjustment := gaNone; if Assigned(v_CompositeBmp) then
P^.TransparentColor := clFuchsia; Bmp := CreateGlyphSplit(v_CompositeBmp, ImageList.Width, ImageList.Height, c_Part);
Node := TreeView.Items.AddObject(nil, IntToStr(I), P); Glyph := CreateGlyph(Bmp, ImageList.Width, ImageList.Height, gaNone);
Node.ImageIndex := I; I := ImageList.AddDirect(Glyph, nil);
Node.SelectedIndex := I;
TreeView.Selected := Node; New(P);
P^.Bitmap := Bmp;
P^.Adjustment := gaNone;
P^.TransparentColor := clFuchsia;
Node := TreeView.Items.AddObject(nil, IntToStr(I), P);
Node.ImageIndex := I;
Node.SelectedIndex := I;
TreeView.Selected := Node;
end;
v_CompositeBmp.Free;
end end
else Bmp.Free; else Bmp.Free;
end; end;

View File

@ -309,6 +309,12 @@ resourcestring
rscdAlignment = 'Alignment'; rscdAlignment = 'Alignment';
rscdLeft = 'Left'; rscdLeft = 'Left';
// image list editor
s_SuggestSplitImage = 'Do you want to split the image?';
s_AddAsSingle = 'Add as single';
s_SplitImage = 'Split image';
implementation implementation
end. end.