158 lines
4.5 KiB
Plaintext
158 lines
4.5 KiB
Plaintext
unit umain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
Menus, ieview, imageenview, StdCtrls, iemview, ExtCtrls, imageenproc, iexBitmaps,
|
|
hyieutils, hyiedefs, iesettings, iexColorPalette, Contnrs, Buttons, ComCtrls,
|
|
iexLayers, iexRulers;
|
|
|
|
type
|
|
TMainForm = class(TForm)
|
|
ImageEnView1: TImageEnView;
|
|
IEColorPalette1: TIEColorPalette;
|
|
ColorDialog1: TColorDialog;
|
|
Timer1: TTimer;
|
|
Splitter1: TSplitter;
|
|
Panel1: TPanel;
|
|
btnLoadImage: TButton;
|
|
btnAnimatePalette: TSpeedButton;
|
|
Label1: TLabel;
|
|
pnlCursorColor: TPanel;
|
|
Label2: TLabel;
|
|
pnlSelectedColor: TPanel;
|
|
Label6: TLabel;
|
|
cmbStyle: TComboBox;
|
|
Label7: TLabel;
|
|
updCellSize: TUpDown;
|
|
btnSetColor: TButton;
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure btnLoadImageClick(Sender: TObject);
|
|
procedure ImageEnView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
procedure btnAnimatePaletteClick(Sender: TObject);
|
|
procedure btnSetColorClick(Sender: TObject);
|
|
procedure cmbStyleChange(Sender: TObject);
|
|
procedure IEColorPalette1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
|
procedure IEColorPalette1SelectedColorChange(Sender: TObject);
|
|
procedure ImageEnView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
|
procedure Timer1Timer(Sender: TObject);
|
|
procedure updCellSizeChanging(Sender: TObject; var AllowChange: Boolean);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
procedure ShowPalette;
|
|
end;
|
|
|
|
var
|
|
MainForm: TMainForm;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
{$R WindowsTheme.res}
|
|
|
|
procedure TMainForm.FormCreate(Sender: TObject);
|
|
begin
|
|
// So index of palette matches that of the image
|
|
IEColorPalette1.SortMethod := iesmNone;
|
|
cmbStyle.ItemIndex := 0;
|
|
|
|
pnlCursorColor .ParentBackground := False;
|
|
pnlSelectedColor.ParentBackground := False;
|
|
end;
|
|
|
|
|
|
// fills IEColorPalette1 with the palette
|
|
procedure TMainForm.ShowPalette;
|
|
begin
|
|
IEColorPalette1.AssignPalette( ImageEnView1 );
|
|
end;
|
|
|
|
procedure TMainForm.btnLoadImageClick(Sender: TObject);
|
|
begin
|
|
// Don't use Windows Bitmaps
|
|
ImageEnView1.LegacyBitmap := False;
|
|
|
|
// Load images in native format
|
|
ImageEnView1.IO.NativePixelFormat := true;
|
|
|
|
with ImageEnView1.IO do
|
|
LoadFromFileAuto( ExecuteOpenDialog());
|
|
|
|
// if the bitmap is not 8 bit paletted then convert it
|
|
if ImageEnView1.IEBitmap.PixelFormat <> ie8p then
|
|
ImageEnView1.IEBitmap.PixelFormat := ie8p;
|
|
|
|
ShowPalette;
|
|
end;
|
|
|
|
procedure TMainForm.ImageEnView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
IEColorPalette1.SelectedColor := TRGB2TColor( ImageEnView1.IEBitmap.Pixels[ ImageEnView1.XScr2Bmp( X ), ImageEnView1.YScr2Bmp( Y ) ]);
|
|
end;
|
|
|
|
// animate palette test
|
|
procedure TMainForm.btnAnimatePaletteClick(Sender: TObject);
|
|
begin
|
|
Timer1.Enabled := btnAnimatePalette.Down;
|
|
ShowPalette;
|
|
end;
|
|
|
|
procedure TMainForm.btnSetColorClick(Sender: TObject);
|
|
var
|
|
selIndex: Integer;
|
|
begin
|
|
selIndex := IEColorPalette1.SelectedIndex;
|
|
if selIndex > -1 then
|
|
begin
|
|
ColorDialog1.Color := TRGB2TColor( ImageEnView1.IEBitmap.Palette[ selIndex ]);
|
|
if ColorDialog1.Execute then
|
|
begin
|
|
ImageEnView1.IEBitmap.Palette[ selIndex ] := TColor2TRGB( ColorDialog1.Color );
|
|
IEColorPalette1.SelectedIndex := selIndex;
|
|
ImageEnView1.Update;
|
|
ShowPalette;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TMainForm.cmbStyleChange(Sender: TObject);
|
|
begin
|
|
IEColorPalette1.CellStyle := TIECellStyle( cmbStyle.ItemIndex );
|
|
end;
|
|
|
|
procedure TMainForm.IEColorPalette1MouseMove(Sender: TObject; Shift:
|
|
TShiftState; X, Y: Integer);
|
|
begin
|
|
pnlCursorColor.color := IEColorPalette1.ColorUnderCursor;
|
|
end;
|
|
|
|
procedure TMainForm.IEColorPalette1SelectedColorChange(Sender: TObject);
|
|
begin
|
|
pnlSelectedColor.color := IEColorPalette1.SelectedColor;
|
|
end;
|
|
|
|
procedure TMainForm.ImageEnView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
pnlCursorColor.color := TRGB2TColor( ImageEnView1.IEBitmap.Pixels[ ImageEnView1.XScr2Bmp( X ), ImageEnView1.YScr2Bmp( Y ) ]);
|
|
end;
|
|
|
|
// animate palette test - running
|
|
procedure TMainForm.Timer1Timer(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
begin
|
|
for i := 0 to 255 do
|
|
ImageEnView1.IEBitmap.Palette[i] := CreateRGB(random(256),random(256),random(256));
|
|
ImageEnView1.Update;
|
|
end;
|
|
|
|
procedure TMainForm.updCellSizeChanging(Sender: TObject; var AllowChange: Boolean);
|
|
begin
|
|
IEColorPalette1.CellSize := abs( updCellSize.Position );
|
|
end;
|
|
|
|
end.
|