begin fractalization
This commit is contained in:
parent
665af685f9
commit
2834a2a458
62
2.02g/Source/GradientHlpr.pas
Normal file
62
2.02g/Source/GradientHlpr.pas
Normal file
@ -0,0 +1,62 @@
|
||||
unit GradientHlpr;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
windows, Graphics;
|
||||
|
||||
const
|
||||
PixelCountMax = 32768;
|
||||
|
||||
type
|
||||
pRGBTripleArray = ^TRGBTripleArray;
|
||||
TRGBTripleArray = array[0..PixelCountMax - 1] of TRGBTriple;
|
||||
|
||||
type
|
||||
TGradientHelper = class
|
||||
private
|
||||
public
|
||||
function GetGradientBitmap(Index: integer; const hue_rotation: double): TBitmap;
|
||||
end;
|
||||
|
||||
var
|
||||
GradientHelper: TGradientHelper;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Cmap;
|
||||
|
||||
{ TGradientHelper }
|
||||
|
||||
function TGradientHelper.GetGradientBitmap(Index: integer; const hue_rotation: double): TBitmap;
|
||||
var
|
||||
BitMap: TBitMap;
|
||||
i, j: integer;
|
||||
Row: pRGBTripleArray;
|
||||
pal: TColorMap;
|
||||
begin
|
||||
GetCMap(index, hue_rotation, pal);
|
||||
|
||||
BitMap := TBitMap.create;
|
||||
Bitmap.PixelFormat := pf24bit;
|
||||
BitMap.Width := 256;
|
||||
BitMap.Height := 2;
|
||||
|
||||
for j := 0 to Bitmap.Height - 1 do begin
|
||||
Row := Bitmap.Scanline[j];
|
||||
for i := 0 to Bitmap.Width - 1 do begin
|
||||
Row[i].rgbtRed := Pal[i][0];
|
||||
Row[i].rgbtGreen := Pal[i][1];
|
||||
Row[i].rgbtBlue := Pal[i][2];
|
||||
end
|
||||
end;
|
||||
|
||||
Result := BitMap;
|
||||
end;
|
||||
|
||||
initialization
|
||||
GradientHelper := TGradientHelper.create;
|
||||
finalization
|
||||
GradientHelper.Free;
|
||||
end.
|
315
2.02g/Source/ImageColoring.dfm
Normal file
315
2.02g/Source/ImageColoring.dfm
Normal file
@ -0,0 +1,315 @@
|
||||
object frmImageColoring: TfrmImageColoring
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 581
|
||||
Height = 401
|
||||
Caption = 'Image coloring'
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object Label1: TLabel
|
||||
Left = 16
|
||||
Top = 40
|
||||
Width = 56
|
||||
Height = 13
|
||||
Caption = 'First Pallete'
|
||||
end
|
||||
object Label2: TLabel
|
||||
Left = 16
|
||||
Top = 168
|
||||
Width = 74
|
||||
Height = 13
|
||||
Caption = 'Second pallette'
|
||||
end
|
||||
object Label3: TLabel
|
||||
Left = 296
|
||||
Top = 36
|
||||
Width = 30
|
||||
Height = 13
|
||||
Caption = 'Image'
|
||||
end
|
||||
object Label4: TLabel
|
||||
Left = 16
|
||||
Top = 107
|
||||
Width = 57
|
||||
Height = 13
|
||||
Alignment = taCenter
|
||||
AutoSize = False
|
||||
Caption = 'Preset'
|
||||
end
|
||||
object Label5: TLabel
|
||||
Left = 16
|
||||
Top = 235
|
||||
Width = 57
|
||||
Height = 13
|
||||
Alignment = taCenter
|
||||
AutoSize = False
|
||||
Caption = 'Preset'
|
||||
end
|
||||
object cbEnable: TCheckBox
|
||||
Left = 16
|
||||
Top = 8
|
||||
Width = 133
|
||||
Height = 17
|
||||
Caption = 'Enable image coloring'
|
||||
TabOrder = 0
|
||||
end
|
||||
object Panel1: TPanel
|
||||
Left = 16
|
||||
Top = 56
|
||||
Width = 258
|
||||
Height = 40
|
||||
BevelOuter = bvLowered
|
||||
TabOrder = 1
|
||||
object imgPal1: TImage
|
||||
Left = 1
|
||||
Top = 1
|
||||
Width = 256
|
||||
Height = 38
|
||||
Align = alClient
|
||||
Stretch = True
|
||||
end
|
||||
end
|
||||
object Panel2: TPanel
|
||||
Left = 16
|
||||
Top = 188
|
||||
Width = 258
|
||||
Height = 40
|
||||
BevelOuter = bvLowered
|
||||
TabOrder = 2
|
||||
object imgpal2: TImage
|
||||
Left = 1
|
||||
Top = 1
|
||||
Width = 256
|
||||
Height = 38
|
||||
Align = alClient
|
||||
Stretch = True
|
||||
end
|
||||
end
|
||||
object Panel3: TPanel
|
||||
Left = 292
|
||||
Top = 60
|
||||
Width = 258
|
||||
Height = 258
|
||||
BevelOuter = bvLowered
|
||||
TabOrder = 3
|
||||
end
|
||||
object cmbPalette1: TComboBox
|
||||
Left = 80
|
||||
Top = 106
|
||||
Width = 177
|
||||
Height = 19
|
||||
Style = csOwnerDrawFixed
|
||||
Color = clBlack
|
||||
DropDownCount = 20
|
||||
Font.Charset = ANSI_CHARSET
|
||||
Font.Color = clWhite
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
ItemHeight = 13
|
||||
ParentFont = False
|
||||
ParentShowHint = False
|
||||
ShowHint = False
|
||||
TabOrder = 4
|
||||
OnChange = cmbPalette1Change
|
||||
OnDrawItem = cmbPalette1DrawItem
|
||||
Items.Strings = (
|
||||
'south-sea-bather'
|
||||
'sky-flesh'
|
||||
'blue-bather'
|
||||
'no-name'
|
||||
'pillows'
|
||||
'mauve-splat'
|
||||
'facial-treescape 6'
|
||||
'fasion-bug'
|
||||
'leafy-face'
|
||||
'mouldy-sun'
|
||||
'sunny-harvest'
|
||||
'peach-tree'
|
||||
'fire-dragon'
|
||||
'ice-dragon'
|
||||
'german-landscape'
|
||||
'no-name'
|
||||
'living-mud-bomb'
|
||||
'cars'
|
||||
'unhealthy-tan'
|
||||
'daffodil'
|
||||
'rose'
|
||||
'healthy-skin'
|
||||
'orange'
|
||||
'white-ivy'
|
||||
'summer-makeup'
|
||||
'glow-buzz'
|
||||
'deep-water'
|
||||
'afternoon-beach'
|
||||
'dim-beach'
|
||||
'cloudy-brick'
|
||||
'burning-wood'
|
||||
'aquatic-garden'
|
||||
'no-name'
|
||||
'fall-quilt'
|
||||
'night-blue-sky'
|
||||
'shadow-iris'
|
||||
'solid-sky'
|
||||
'misty-field'
|
||||
'wooden-highlight'
|
||||
'jet-tundra'
|
||||
'pastel-lime'
|
||||
'hell'
|
||||
'indian-coast'
|
||||
'dentist-decor'
|
||||
'greenland'
|
||||
'purple-dress'
|
||||
'no-name'
|
||||
'spring-flora'
|
||||
'andi'
|
||||
'gig-o835'
|
||||
'rie02'
|
||||
'rie05'
|
||||
'rie11'
|
||||
'etretat.ppm'
|
||||
'the-hollow-needle-at-etretat.ppm'
|
||||
'rouen-cathedral-sunset.ppm'
|
||||
'the-houses-of-parliament.ppm'
|
||||
'starry-night.ppm'
|
||||
'water-lilies-sunset.ppm'
|
||||
'gogh.chambre-arles.ppm'
|
||||
'gogh.entrance.ppm'
|
||||
'gogh.the-night-cafe.ppm'
|
||||
'gogh.vegetable-montmartre.ppm'
|
||||
'matisse.bonheur-vivre.ppm'
|
||||
'matisse.flowers.ppm'
|
||||
'matisse.lecon-musique.ppm'
|
||||
'modigliani.nude-caryatid.ppm'
|
||||
'braque.instruments.ppm'
|
||||
'calcoast09.ppm'
|
||||
'dodge102.ppm'
|
||||
'ernst.anti-pope.ppm'
|
||||
'ernst.ubu-imperator.ppm'
|
||||
'fighting-forms.ppm'
|
||||
'fog25.ppm'
|
||||
'geyser27.ppm'
|
||||
'gris.josette.ppm'
|
||||
'gris.landscape-ceret.ppm'
|
||||
'kandinsky.comp-9.ppm'
|
||||
'kandinsky.yellow-red-blue.ppm'
|
||||
'klee.insula-dulcamara.ppm'
|
||||
'nile.ppm'
|
||||
'picasso.jfille-chevre.ppm'
|
||||
'pollock.lavender-mist.ppm'
|
||||
'yngpaint.ppm')
|
||||
end
|
||||
object cmbPalette2: TComboBox
|
||||
Left = 80
|
||||
Top = 234
|
||||
Width = 177
|
||||
Height = 19
|
||||
Style = csOwnerDrawFixed
|
||||
Color = clBlack
|
||||
DropDownCount = 20
|
||||
Font.Charset = ANSI_CHARSET
|
||||
Font.Color = clWhite
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
ItemHeight = 13
|
||||
ParentFont = False
|
||||
ParentShowHint = False
|
||||
ShowHint = False
|
||||
TabOrder = 5
|
||||
OnChange = cmbPalette2Change
|
||||
OnDrawItem = cmbPalette1DrawItem
|
||||
Items.Strings = (
|
||||
'south-sea-bather'
|
||||
'sky-flesh'
|
||||
'blue-bather'
|
||||
'no-name'
|
||||
'pillows'
|
||||
'mauve-splat'
|
||||
'facial-treescape 6'
|
||||
'fasion-bug'
|
||||
'leafy-face'
|
||||
'mouldy-sun'
|
||||
'sunny-harvest'
|
||||
'peach-tree'
|
||||
'fire-dragon'
|
||||
'ice-dragon'
|
||||
'german-landscape'
|
||||
'no-name'
|
||||
'living-mud-bomb'
|
||||
'cars'
|
||||
'unhealthy-tan'
|
||||
'daffodil'
|
||||
'rose'
|
||||
'healthy-skin'
|
||||
'orange'
|
||||
'white-ivy'
|
||||
'summer-makeup'
|
||||
'glow-buzz'
|
||||
'deep-water'
|
||||
'afternoon-beach'
|
||||
'dim-beach'
|
||||
'cloudy-brick'
|
||||
'burning-wood'
|
||||
'aquatic-garden'
|
||||
'no-name'
|
||||
'fall-quilt'
|
||||
'night-blue-sky'
|
||||
'shadow-iris'
|
||||
'solid-sky'
|
||||
'misty-field'
|
||||
'wooden-highlight'
|
||||
'jet-tundra'
|
||||
'pastel-lime'
|
||||
'hell'
|
||||
'indian-coast'
|
||||
'dentist-decor'
|
||||
'greenland'
|
||||
'purple-dress'
|
||||
'no-name'
|
||||
'spring-flora'
|
||||
'andi'
|
||||
'gig-o835'
|
||||
'rie02'
|
||||
'rie05'
|
||||
'rie11'
|
||||
'etretat.ppm'
|
||||
'the-hollow-needle-at-etretat.ppm'
|
||||
'rouen-cathedral-sunset.ppm'
|
||||
'the-houses-of-parliament.ppm'
|
||||
'starry-night.ppm'
|
||||
'water-lilies-sunset.ppm'
|
||||
'gogh.chambre-arles.ppm'
|
||||
'gogh.entrance.ppm'
|
||||
'gogh.the-night-cafe.ppm'
|
||||
'gogh.vegetable-montmartre.ppm'
|
||||
'matisse.bonheur-vivre.ppm'
|
||||
'matisse.flowers.ppm'
|
||||
'matisse.lecon-musique.ppm'
|
||||
'modigliani.nude-caryatid.ppm'
|
||||
'braque.instruments.ppm'
|
||||
'calcoast09.ppm'
|
||||
'dodge102.ppm'
|
||||
'ernst.anti-pope.ppm'
|
||||
'ernst.ubu-imperator.ppm'
|
||||
'fighting-forms.ppm'
|
||||
'fog25.ppm'
|
||||
'geyser27.ppm'
|
||||
'gris.josette.ppm'
|
||||
'gris.landscape-ceret.ppm'
|
||||
'kandinsky.comp-9.ppm'
|
||||
'kandinsky.yellow-red-blue.ppm'
|
||||
'klee.insula-dulcamara.ppm'
|
||||
'nile.ppm'
|
||||
'picasso.jfille-chevre.ppm'
|
||||
'pollock.lavender-mist.ppm'
|
||||
'yngpaint.ppm')
|
||||
end
|
||||
end
|
138
2.02g/Source/ImageColoring.pas
Normal file
138
2.02g/Source/ImageColoring.pas
Normal file
@ -0,0 +1,138 @@
|
||||
unit ImageColoring;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||
Dialogs, ExtCtrls, StdCtrls, cmap;
|
||||
|
||||
type
|
||||
TfrmImageColoring = class(TForm)
|
||||
cbEnable: TCheckBox;
|
||||
Panel1: TPanel;
|
||||
Panel2: TPanel;
|
||||
Panel3: TPanel;
|
||||
Label1: TLabel;
|
||||
Label2: TLabel;
|
||||
Label3: TLabel;
|
||||
cmbPalette1: TComboBox;
|
||||
Label4: TLabel;
|
||||
imgPal1: TImage;
|
||||
imgpal2: TImage;
|
||||
Label5: TLabel;
|
||||
cmbPalette2: TComboBox;
|
||||
procedure cmbPalette2Change(Sender: TObject);
|
||||
procedure cmbPalette1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
|
||||
procedure cmbPalette1Change(Sender: TObject);
|
||||
private
|
||||
FPal1: TColorMap;
|
||||
FPal2: TColorMap;
|
||||
FBkuPal1: TColorMap;
|
||||
FBkuPal2: TColorMap;
|
||||
Index1: integer;
|
||||
Index2: integer;
|
||||
|
||||
procedure DrawPalette1;
|
||||
procedure DrawPalette2;
|
||||
|
||||
procedure Apply;
|
||||
public
|
||||
procedure Update;
|
||||
end;
|
||||
|
||||
var
|
||||
frmImageColoring: TfrmImageColoring;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
uses
|
||||
Main, Editor, Mutate, GradientHlpr;
|
||||
|
||||
{ TfrmImageColoring }
|
||||
|
||||
procedure TfrmImageColoring.Update;
|
||||
begin
|
||||
// FPal1 := MainCP.Pal;
|
||||
FBkuPal1 := FPal1;
|
||||
end;
|
||||
|
||||
procedure TfrmImageColoring.cmbPalette1Change(Sender: TObject);
|
||||
begin
|
||||
Index1 := cmbPalette1.ItemIndex;
|
||||
GetCmap(Index1, 1, FPal1);
|
||||
FBkuPal1 := FPal1;
|
||||
// ScrollBar.Position := 0;
|
||||
DrawPalette1;
|
||||
Apply;
|
||||
end;
|
||||
|
||||
procedure TfrmImageColoring.Apply;
|
||||
begin
|
||||
MainForm.StopThread;
|
||||
MainForm.UpdateUndo;
|
||||
|
||||
MainCp.CmapIndex := cmbPalette1.ItemIndex;
|
||||
MainCp.cmap := FPal1;
|
||||
|
||||
if EditForm.visible then EditForm.UpdateDisplay;
|
||||
if MutateForm.Visible then MutateForm.UpdateDisplay;
|
||||
|
||||
MainForm.RedrawTimer.enabled := true;
|
||||
end;
|
||||
|
||||
procedure TfrmImageColoring.cmbPalette1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
|
||||
var
|
||||
Bitmap: TBitmap;
|
||||
PalName: string;
|
||||
begin
|
||||
BitMap := GradientHelper.GetGradientBitmap(Index, 1);
|
||||
|
||||
GetCmapName(index, PalName);
|
||||
|
||||
with Control as TComboBox do begin
|
||||
Canvas.Rectangle(Rect);
|
||||
|
||||
Canvas.TextOut(4, Rect.Top, PalName);
|
||||
Rect.Left := (Rect.Left + rect.Right) div 2;
|
||||
Canvas.StretchDraw(Rect, Bitmap);
|
||||
end;
|
||||
BitMap.Free;
|
||||
end;
|
||||
|
||||
procedure TfrmImageColoring.DrawPalette1;
|
||||
var
|
||||
Bitmap: TBitmap;
|
||||
begin
|
||||
BitMap := GradientHelper.GetGradientBitmap(Index1, 1);
|
||||
|
||||
imgPal1.Picture.Graphic := Bitmap;
|
||||
imgPal1.Refresh;
|
||||
|
||||
BitMap.Free;
|
||||
end;
|
||||
|
||||
procedure TfrmImageColoring.DrawPalette2;
|
||||
var
|
||||
Bitmap: TBitmap;
|
||||
begin
|
||||
BitMap := GradientHelper.GetGradientBitmap(Index2, 1);
|
||||
|
||||
imgPal2.Picture.Graphic := Bitmap;
|
||||
imgPal2.Refresh;
|
||||
|
||||
BitMap.Free;
|
||||
end;
|
||||
|
||||
procedure TfrmImageColoring.cmbPalette2Change(Sender: TObject);
|
||||
begin
|
||||
Index2 := cmbPalette2.ItemIndex;
|
||||
GetCmap(Index2, 1, FPal2);
|
||||
FBkuPal2 := FPal2;
|
||||
// ScrollBar.Position := 0;
|
||||
DrawPalette2;
|
||||
Apply;
|
||||
end;
|
||||
|
||||
end.
|
Loading…
Reference in New Issue
Block a user