Subversion Repositories colormanager

Compare Revisions

Regard whitespace Rev 2 → Rev 3

/trunk/Unit1.pas
34,7 → 34,6
CurrentLbl: TLabel;
mWebsafe: TMenuItem;
mWebsafeInv: TMenuItem;
TabControl: TTabControl;
Panel1: TPanel;
RGBBox: TGroupBox;
RLbl: TLabel;
297,16 → 296,12
Info9: TLabel;
Info12: TLabel;
Info5: TLabel;
Info10: TLabel;
Info11: TLabel;
Info14: TLabel;
Info15: TLabel;
Info13: TLabel;
ColorTmr: TTimer;
Info3: TLabel;
AverageX: TEdit;
AverageMidLbl: TLabel;
AverageY: TEdit;
MagPnl: TPanel;
MagBox: TPaintBox;
favo17: TPanel;
330,6 → 325,13
RProLbl: TLabel;
GProLbl: TLabel;
BProLbl: TLabel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
AverageX: TSpinEdit;
AverageY: TSpinEdit;
procedure ColorClick(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure SaveEditChange(Sender: TObject);
343,7 → 345,6
procedure OutboxPaint(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure WebsafeLblClick(Sender: TObject);
procedure TabControlChange(Sender: TObject);
procedure InvertBtnClick(Sender: TObject);
procedure TakeClick(Sender: TObject);
procedure DelphiBoxClick(Sender: TObject);
358,6 → 359,7
procedure EditKeyPress(Sender: TObject; var Key: Char);
procedure UpDownClick(Sender: TObject; Button: TUDBtnType);
procedure Change(Sender: TObject);
procedure AverageXYChange(Sender: TObject);
private
LangArray: Array of TLanguageEntry;
function GetLangEntry(name: string): string;
378,8 → 380,8
procedure CheckWebfarben;
procedure CheckDelphiFarben;
procedure ZeigeRichtigePalette;
procedure SchreibeInt(name: string; wert: integer);
function LeseInt(name: string): integer;
procedure WriteIntSetting(name: string; wert: integer);
function ReadIntSetting(name: string): integer;
end;
 
var
392,27 → 394,159
{$R WindowsXP.res}
 
const
webfarben: array[0..140] of string = ('#F0F8FF', '#FAEBD7', '#00FFFF', '#7FFFD4',
'#F0FFFF', '#F5F5DC', '#FFE4C4', '#000000', '#FFEBCD', '#0000FF', '#8A2BE2',
'#A52A2A', '#DEB887', '#5F9EA0', '#7FFF00', '#D2691E', '#FF7F50', '#6495ED',
'#FFF8DC', '#DC143C', '#00FFFF', '#00008B', '#008B8B', '#B8860B', '#A9A9A9',
'#006400', '#BDB76B', '#8B008B', '#556B2F', '#FF8C00', '#9932CC', '#8B0000',
'#E9967A', '#8FBC8F', '#483D8B', '#2F4F4F', '#00CED1', '#9400D3', '#FF1493',
'#00BFFF', '#696969', '#1E90FF', '#B22222', '#FFFAF0', '#228B22', '#FF00FF',
'#DCDCDC', '#F8F8FF', '#FFD700', '#DAA520', '#808080', '#008000', '#ADFF2F',
'#808080', '#F0FFF0', '#FF69B4', '#CD5C5C', '#4B0082', '#FFFFF0', '#F0E68C',
'#E6E6FA', '#FFF0F5', '#7CFC00', '#FFFACD', '#ADD8E6', '#F08080', '#E0FFFF',
'#FAFAD2', '#90EE90', '#D3D3D3', '#FFB6C1', '#FFA07A', '#20B2AA', '#87CEFA',
'#778899', '#B0C4DE', '#FFFFE0', '#00FF00', '#32CD32', '#FAF0E6', '#FF00FF',
'#800000', '#66CDAA', '#0000CD', '#BA55D3', '#9370DB', '#3CB371', '#7B68EE',
'#00FA9A', '#48D1CC', '#C71585', '#191970', '#F5FFFA', '#FFE4E1', '#FFE4B5',
'#FFDEAD', '#000080', '#FDF5E6', '#808000', '#6B8E23', '#FFA500', '#FF4500',
'#DA70D6', '#EEE8AA', '#98FB98', '#AFEEEE', '#DB7093', '#FFEFD5', '#FFDAB9',
'#CD853F', '#FFC0CB', '#DDA0DD', '#B0E0E6', '#800080', '#FF0000', '#BC8F8F',
'#4169E1', '#8B4513', '#FA8072', '#F4A460', '#2E8B57', '#FFF5EE', '#A0522D',
'#C0C0C0', '#87CEEB', '#6A5ACD', '#708090', '#FFFAFA', '#00FF7F', '#4682B4',
'#D2B48C', '#008080', '#D8BFD8', '#FF6347', '#40E0D0', '#EE82EE', '#F5DEB3',
'#FFFFFF', '#F5F5F5', '#FFFF00', '#9ACD32');
// Source: https://developer.mozilla.org/en-US/docs/Web/CSS/named-color
webfarben: array[0..149] of string = (
'#f0f8ff', // aliceblue
'#faebd7', // antiquewhite
'#00ffff', // aqua
'#7fffd4', // aquamarine
'#f0ffff', // azure
'#f5f5dc', // beige
'#ffe4c4', // bisque
'#000000', // black
'#ffebcd', // blanchedalmond
'#0000ff', // blue
'#8a2be2', // blueviolet
'#a52a2a', // brown
'#deb887', // burlywood
'#5f9ea0', // cadetblue
'#7fff00', // chartreuse
'#d2691e', // chocolate
'#ff7f50', // coral
'#6495ed', // cornflowerblue
'#fff8dc', // cornsilk
'#dc143c', // crimson
'#00ffff', // cyan (synonym of aqua)
'#00008b', // darkblue
'#008b8b', // darkcyan
'#b8860b', // darkgoldenrod
'#a9a9a9', // darkgray
'#006400', // darkgreen
'#a9a9a9', // darkgrey
'#bdb76b', // darkkhaki
'#8b008b', // darkmagenta
'#556b2f', // darkolivegreen
'#ff8c00', // darkorange
'#9932cc', // darkorchid
'#8b0000', // darkred
'#e9967a', // darksalmon
'#8fbc8f', // darkseagreen
'#483d8b', // darkslateblue
'#2f4f4f', // darkslategray
'#2f4f4f', // darkslategrey
'#00ced1', // darkturquoise
'#9400d3', // darkviolet
'#ff1493', // deeppink
'#00bfff', // deepskyblue
'#696969', // dimgray
'#696969', // dimgrey
'#1e90ff', // dodgerblue
'#b22222', // firebrick
'#fffaf0', // floralwhite
'#228b22', // forestgreen
'#ff00ff', // fuchsia
'#dcdcdc', // gainsboro
'#f8f8ff', // ghostwhite
'#ffd700', // gold
'#daa520', // goldenrod
'#808080', // gray
'#008000', // green
'#adff2f', // greenyellow
'#808080', // grey (synonym of gray)
'#f0fff0', // honeydew
'#ff69b4', // hotpink
'#cd5c5c', // indianred
'#4b0082', // indigo
'#fffff0', // ivory
'#f0e68c', // khaki
'#e6e6fa', // lavender
'#fff0f5', // lavenderblush
'#7cfc00', // lawngreen
'#fffacd', // lemonchiffon
'#add8e6', // lightblue
'#f08080', // lightcoral
'#e0ffff', // lightcyan
'#fafad2', // lightgoldenrodyellow
'#d3d3d3', // lightgray
'#90ee90', // lightgreen
'#d3d3d3', // lightgrey
'#ffb6c1', // lightpink
'#ffa07a', // lightsalmon
'#20b2aa', // lightseagreen
'#87cefa', // lightskyblue
'#778899', // lightslategray
'#778899', // lightslategrey
'#b0c4de', // lightsteelblue
'#ffffe0', // lightyellow
'#00ff00', // lime
'#00ff00', // lime
'#32cd32', // limegreen
'#faf0e6', // linen
'#ff00ff', // magenta (synonym of fuchsia)
'#800000', // maroon
'#800000', // maroon
'#66cdaa', // mediumaquamarine
'#0000cd', // mediumblue
'#ba55d3', // mediumorchid
'#9370db', // mediumpurple
'#3cb371', // mediumseagreen
'#7b68ee', // mediumslateblue
'#00fa9a', // mediumspringgreen
'#48d1cc', // mediumturquoise
'#c71585', // mediumvioletred
'#191970', // midnightblue
'#f5fffa', // mintcream
'#ffe4e1', // mistyrose
'#ffe4b5', // moccasin
'#ffdead', // navajowhite
'#000080', // navy
'#fdf5e6', // oldlace
'#808000', // olive
'#6b8e23', // olivedrab
'#ffa500', // orange
'#ff4500', // orangered
'#da70d6', // orchid
'#eee8aa', // palegoldenrod
'#98fb98', // palegreen
'#afeeee', // paleturquoise
'#db7093', // palevioletred
'#ffefd5', // papayawhip
'#ffdab9', // peachpuff
'#cd853f', // peru
'#ffc0cb', // pink
'#dda0dd', // plum
'#b0e0e6', // powderblue
'#800080', // purple
'#663399', // rebeccapurple
'#ff0000', // red
'#bc8f8f', // rosybrown
'#4169e1', // royalblue
'#8b4513', // saddlebrown
'#fa8072', // salmon
'#f4a460', // sandybrown
'#2e8b57', // seagreen
'#fff5ee', // seashell
'#a0522d', // sienna
'#c0c0c0', // silver
'#87ceeb', // skyblue
'#6a5acd', // slateblue
'#708090', // slategray
'#708090', // slategrey
'#fffafa', // snow
'#00ff7f', // springgreen
'#4682b4', // steelblue
'#d2b48c', // tan
'#008080', // teal
'#d8bfd8', // thistle
'#ff6347', // tomato
'#40e0d0', // turquoise
'#ee82ee', // violet
'#f5deb3', // wheat
'#ffffff', // white
'#f5f5f5', // whitesmoke
'#ffff00', // yellow
'#9acd32' // yellowgreen
);
 
function TMainForm.GetLangEntry(name: string): string;
var
560,6 → 694,11
SetCapture(MainForm.Handle);
end;
 
procedure TMainForm.AverageXYChange(Sender: TObject);
begin
WriteIntSetting(TSpinEdit(sender).GetNamePath, TSpinEdit(sender).Value);
end;
 
procedure TMainForm.DrawGrad(BoxNum: integer);
var
R, G, B, S, V: byte;
755,6 → 894,8
end;
end;
 
PageControl1.ActivePageIndex := 0;
 
// Elemente mit Sprache versehen
rgbbox.Caption := GetLangEntry('rgb');
hsvbox.Caption := GetLangEntry('hsv');
793,11 → 934,10
websafelbl.caption := GetLangEntry('websafelbl');
komplementaercolor.Caption := GetLangEntry('invcolor');
websafe2.Caption := GetLangEntry('invwebsafe');
tabcontrol.tabs.clear;
tabcontrol.Tabs.add(GetLangEntry('tab1'));
tabcontrol.Tabs.add(GetLangEntry('tab2'));
tabcontrol.Tabs.add(GetLangEntry('tab3'));
tabcontrol.Tabs.add(GetLangEntry('tab4'));
PageControl1.Pages[0].Caption := GetLangEntry('tab1');
PageControl1.Pages[1].Caption := GetLangEntry('tab2');
PageControl1.Pages[2].Caption := GetLangEntry('tab3');
PageControl1.Pages[3].Caption := GetLangEntry('tab4');
colormixerbox.Caption := getlangentry('colormixer');
color1.Caption := getlangentry('color') + ' 1';
color2.Caption := getlangentry('color') + ' 2';
805,7 → 945,7
colorbox.caption := getlangentry('colors');
pallbl.Caption := getlangentry('availablepals');
delphiboxlbl.Caption := getlangentry('delphipal');
webcolorlbl.Caption := getlangentry('css3');
webcolorlbl.Caption := getlangentry('css');
delphizutreffendlbl.Caption := getlangentry('zutr');
webzutreffendlbl.Caption := getlangentry('zutr');
qblbl.Caption := getlangentry('vgapal');
823,7 → 963,6
info4.Caption := getlangentry('leader');
info6.Caption := getlangentry('email');
info8.Caption := getlangentry('website');
info10.Caption := getlangentry('icq');
info13.Caption := getlangentry('webportal');
info14.Caption := getlangentry('viathinksoft');
info15.Caption := getlangentry('projektseite');
852,10 → 991,10
// Favoriten-Farben und Einstellungen aus Registry holen
pal.ItemIndex := 0;
for i := 1 to 20 do
tpanel(mainform.FindComponent('favo'+inttostr(i))).Color := LeseInt('favo'+inttostr(i));
pal.ItemIndex := LeseInt('Palette');
AverageX.Text := inttostr(LeseInt('AverageX'));
AverageY.Text := inttostr(LeseInt('AverageY'));
tpanel(mainform.FindComponent('favo'+inttostr(i))).Color := ReadIntSetting('favo'+inttostr(i));
pal.ItemIndex := ReadIntSetting('Palette');
AverageX.Value := ReadIntSetting('AverageX');
AverageY.Value := ReadIntSetting('AverageY');
 
ZeigeRichtigePalette;
end;
1013,7 → 1152,7
begin
if not (Key in [#13, #08, '0'..'9', 'a'..'f', 'A'..'F']) then Key := #0;
end
else if (sender = Long) or (sender = AverageX) or (sender = AverageY) or
else if (sender = Long) or
(sender = SPro) or (sender = VPro) or (sender = RPro) or (sender = GPro) or
(sender = BPro) then
begin
1457,6 → 1596,8
AverageR, AverageG, AverageB: integer;
x, y: shortint;
begin
if PageControl1.ActivePage <> TabSheet3 then exit;
 
GetCursorPos(CursorPos);
CoordsLbl.Caption := Format('%d,' + #13 + '%d', [CursorPos.x, CursorPos.y]);
 
1463,8 → 1604,8
AverageR := 0;
AverageG := 0;
Averageb := 0;
for y := -floor((strtoint(AverageY.text)-1)/2) to ceil((strtoint(AverageY.text)-1)/2) do
for x := -floor((strtoint(AverageX.text)-1)/2) to ceil((strtoint(AverageX.text)-1)/2) do
for y := -floor((AverageY.Value-1)/2) to ceil((AverageY.Value-1)/2) do
for x := -floor((AverageX.Value-1)/2) to ceil((AverageX.Value-1)/2) do
begin
PixelCol := GetPixel(ScreenDC, CursorPos.x + x, CursorPos.y + y);
AverageR := AverageR + GetRValue(PixelCol);
1471,20 → 1612,20
AverageG := AverageG + GetGValue(PixelCol);
AverageB := AverageB + GetBValue(PixelCol);
end;
if strtoint(AverageX.text)*strtoint(AverageY.text) > 0 then
AverageR := AverageR div (strtoint(AverageX.text)*strtoint(AverageY.text));
if strtoint(AverageX.text)*strtoint(AverageY.text) > 0 then
AverageG := AverageG div (strtoint(AverageX.text)*strtoint(AverageY.text));
if strtoint(AverageX.text)*strtoint(AverageY.text) > 0 then
AverageB := AverageB div (strtoint(AverageX.text)*strtoint(AverageY.text));
if AverageX.Value*AverageY.Value > 0 then
AverageR := AverageR div (AverageX.Value*AverageY.Value);
if AverageX.Value*AverageY.Value > 0 then
AverageG := AverageG div (AverageX.Value*AverageY.Value);
if AverageX.Value*AverageY.Value > 0 then
AverageB := AverageB div (AverageX.Value*AverageY.Value);
 
PixelCol := RGB(Lo(AverageR), Lo(AverageG), Lo(AverageB));
 
BitBlt(MemPix.Canvas.Handle,
0, 0,
strtoint(AverageX.text), strtoint(AverageY.text),
AverageX.Value, AverageY.Value,
ScreenDC,
CursorPos.x - floor(strtoint(AverageX.text)/2), CursorPos.y - floor(strtoint(AverageY.text)/2),
CursorPos.x - floor(AverageX.Value/2), CursorPos.y - floor(AverageY.Value/2),
SRCCOPY);
StretchBlt(MagBox.Canvas.Handle,
0, 0,
1491,7 → 1632,7
MagBox.Width, MagBox.Height,
MemPix.Canvas.Handle,
0, 0,
strtoint(AverageX.text), strtoint(AverageY.text),
AverageX.Value, AverageY.Value,
SRCCOPY);
 
if not PickBtn.Enabled then
1541,7 → 1682,7
(PopupmenuSender = favo13) or (PopupmenuSender = favo14) or (PopupmenuSender = favo15) or
(PopupmenuSender = favo16) or (PopupmenuSender = favo17) or (PopupmenuSender = favo18) or
(PopupmenuSender = favo19) or (PopupmenuSender = favo20) then
SchreibeInt(tpanel(PopupmenuSender).GetNamePath, colortorgb(tpanel(PopupmenuSender).color));
WriteIntSetting(tpanel(PopupmenuSender).GetNamePath, colortorgb(tpanel(PopupmenuSender).color));
end;
 
procedure TMainForm.Menu2Click(Sender: TObject);
1553,8 → 1694,30
end;
 
procedure TMainForm.GreyscaleBtnClick(Sender: TObject);
var
i: integer;
begin
S.Position := 0;
//S.Position := 0;
 
i := Round((R.Position*0.2126) + (G.Position*0.7152) + (B.Position*0.0722));
 
R.OnChange := nil;
G.OnChange := nil;
B.OnChange := nil;
 
R.Position := i;
G.Position := i;
B.Position := i;
 
AktualisiereWert(r);
AktualisiereWert(g);
AktualisiereWert(b);
 
R.OnChange := Change;
G.OnChange := Change;
B.OnChange := Change;
 
AktualisiereFarben(true);
end;
 
procedure TMainForm.DefColorClick(Sender: TObject);
1584,7 → 1747,7
G.OnChange := Change;
B.OnChange := Change;
 
// DelphiBox muss nicht mehr ignoriert werden, da wir nun "DelphiZustimmend"
// DelphiBox muss nicht mehr ignoriert werden, da wir nun "CheckDelphiFarben"
// verwenden und nichts mehr in der DelphiBox markieren
// AktualisiereFarben(true, 1);
AktualisiereFarben(true);
1600,14 → 1763,6
TakeClick(KomplementaerColor);
end;
 
procedure TMainForm.TabControlChange(Sender: TObject);
begin
panel1.Visible := tabcontrol.TabIndex = 0;
panel2.Visible := tabcontrol.TabIndex = 1;
panel3.Visible := tabcontrol.TabIndex = 2;
panel4.Visible := tabcontrol.TabIndex = 3;
end;
 
procedure TMainForm.WebsafeLblClick(Sender: TObject);
begin
TakeClick(websafe1);
1616,9 → 1771,9
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ReleaseDC(0, ScreenDC);
MemPix.Free;
BoxBuf.Free;
Box2Buf.Free;
FreeAndNil(MemPix);
FreeAndNil(BoxBuf);
FreeAndNil(Box2Buf);
end;
 
procedure TMainForm.OutboxPaint(Sender: TObject);
1635,7 → 1790,7
procedure TMainForm.PalClick(Sender: TObject);
begin
ZeigeRichtigePalette;
SchreibeInt('Palette', Pal.ItemIndex);
WriteIntSetting('Palette', Pal.ItemIndex);
end;
 
procedure TMainForm.WinDialogClick(Sender: TObject);
1647,7 → 1802,7
 
procedure TMainForm.WebcolorBoxClick(Sender: TObject);
begin
html.Text := webfarben[webcolorbox.ItemIndex];
html.Text := UpperCase(webfarben[webcolorbox.ItemIndex]);
 
R.OnChange := nil;
G.OnChange := nil;
1672,7 → 1827,7
AktualisiereWert(g);
AktualisiereWert(b);
 
// WebcolorBox muss nicht mehr ignoriert werden, da wir nun "WebZustimmend"
// WebcolorBox muss nicht mehr ignoriert werden, da wir nun "CheckWebfarben"
// verwenden und nichts mehr in der WebcolorBox markieren
// AktualisiereFarben(true, 2);
AktualisiereFarben(true);
1684,11 → 1839,11
begin
WebZutreffend.Clear;
if webcolorbox.itemindex <> -1 then
if html.text <> webfarben[webcolorbox.itemindex] then
if not SameText(html.text, webfarben[webcolorbox.itemindex]) then
webcolorbox.itemindex := -1;
for i := 0 to high(webfarben) do
begin
if html.text = webfarben[i] then
if SameText(html.text, webfarben[i]) then
WebZutreffend.Items.add(webcolorbox.Items.Strings[i]); // Geht nicht mit mehreren Übereinstimmungen: webcolorbox.ItemIndex := i;
end;
end;
1722,15 → 1877,13
procedure TMainForm.LinkClick(Sender: TObject);
begin
if sender = info7 then
ShellExecute(Application.Handle, 'open', pchar('mailto:'+tlabel(sender).caption+'?subject=ColorManager 2.0'), nil, nil, SW_SHOW);
ShellExecute(Application.Handle, 'open', pchar('mailto:'+tlabel(sender).caption+'?subject=ColorManager 2.1'), nil, nil, SW_SHOW);
if (sender = Info9) or (sender = Info13) then
ShellExecute(Application.Handle, 'open', pchar(Info9.caption), nil, nil, SW_SHOW);
if (sender = Info11) then
ShellExecute(Application.Handle, 'open', 'http://www.icq.com/people/about_me.php?uin=160106169', nil, nil, SW_SHOW);
if (sender = Info14) then
ShellExecute(Application.Handle, 'open', 'http://www.viathinksoft.de/', nil, nil, SW_SHOW);
ShellExecute(Application.Handle, 'open', 'https://www.viathinksoft.de/', nil, nil, SW_SHOW);
if (sender = Info15) then
ShellExecute(Application.Handle, 'open', 'http://www.viathinksoft.de/index.php?page=projektanzeige&seite=projekt-20', nil, nil, SW_SHOW);
ShellExecute(Application.Handle, 'open', 'https://www.viathinksoft.de/projects/colormanager', nil, nil, SW_SHOW);
end;
 
var
1745,7 → 1898,7
Info1.Font.Color := hsvtorgb(ColorTmrDurchlauf, 255, 200);
end;
 
procedure TMainForm.SchreibeInt(name: string; wert: integer);
procedure TMainForm.WriteIntSetting(name: string; wert: integer);
var
reg: TRegistry;
begin
1760,7 → 1913,7
end;
end;
 
function TMainForm.LeseInt(name: string): integer;
function TMainForm.ReadIntSetting(name: string): integer;
var
reg: TRegistry;
begin
1779,7 → 1932,7
 
procedure TMainForm.SaveEditChange(Sender: TObject);
begin
SchreibeInt(tedit(sender).GetNamePath, strtoint(tedit(sender).text));
WriteIntSetting(tedit(sender).GetNamePath, strtoint(tedit(sender).text));
end;
 
procedure TMainForm.ColorClick(Sender: TObject; Button: TMouseButton;