2.91+
git-svn-id: https://svn.code.sf.net/p/kolmck/code@66 91bb2d04-0c0c-4d2d-88a5-bbb6f4c1fa07
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
// Name: KOL Addon - Visual XP Styles
|
// Name: KOL Addon - Visual XP Styles
|
||||||
// Rev.: 1.97
|
// Rev.: 1.98
|
||||||
// Date: 09 aug 2009
|
// Date: 04 may 2010
|
||||||
// Author: MTsv DN
|
// Author: MTsv DN
|
||||||
// Thanks: mdw, Vladimir Kladov
|
// Thanks: mdw, Vladimir Kladov
|
||||||
|
|
||||||
@ -11,6 +11,36 @@ const
|
|||||||
clDkGrey = TColor($808080);
|
clDkGrey = TColor($808080);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
|
procedure ConvertBitmap2Grayscale(var Bmp: PBitmap);
|
||||||
|
type
|
||||||
|
TRGBArray = array[0..32767] of TRGBTriple;
|
||||||
|
PRGBArray = ^TRGBArray;
|
||||||
|
var
|
||||||
|
x, y, Gray: Integer;
|
||||||
|
Row: PRGBArray;
|
||||||
|
R, G, B : Byte;
|
||||||
|
TrColor : Integer;
|
||||||
|
begin
|
||||||
|
Bmp.PixelFormat := pf24bit;
|
||||||
|
TrColor := Bmp.Pixels[Bmp.Width - 1, 0];
|
||||||
|
for y := 0 to Bmp.Height - 1 do
|
||||||
|
begin
|
||||||
|
Row := Bmp.ScanLine[y];
|
||||||
|
for x := 0 to Bmp.Width - 1 do
|
||||||
|
begin
|
||||||
|
R := LoByte(LoWord(TrColor));
|
||||||
|
G := HiByte(LoWord(TrColor));
|
||||||
|
B := LoByte(HiWord(TrColor));
|
||||||
|
if (Row[x].rgbtRed = R) and
|
||||||
|
(Row[x].rgbtGreen = G) and
|
||||||
|
(Row[x].rgbtBlue = B) then continue;
|
||||||
|
Gray := (Row[x].rgbtRed + Row[x].rgbtGreen + Row[x].rgbtBlue) div 3;
|
||||||
|
Row[x].rgbtRed := Gray;
|
||||||
|
Row[x].rgbtGreen := Gray;
|
||||||
|
Row[x].rgbtBlue := Gray;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
//********************* Creating font on Sender font base ********************//
|
//********************* Creating font on Sender font base ********************//
|
||||||
function CreateNewFont(Sender : PControl): HFont;
|
function CreateNewFont(Sender : PControl): HFont;
|
||||||
const
|
const
|
||||||
@ -388,15 +418,15 @@ begin
|
|||||||
hThemes := OpenThemeData(Sender.fHandle, 'button');
|
hThemes := OpenThemeData(Sender.fHandle, 'button');
|
||||||
if hThemes <> 0 then
|
if hThemes <> 0 then
|
||||||
begin
|
begin
|
||||||
Sender.Color := Sender.fParent.Color;
|
Sender.Color := Sender.fParent.fColor;
|
||||||
if Sender.fEnabled then fState := 1 else fState := 2;
|
if Sender.fEnabled then fState := 1 else fState := 2;
|
||||||
// Drawing GroupBox rect "step by step"
|
// Drawing GroupBox rect "step by step"
|
||||||
DrawThemeBackground(hThemes, DC, 4{BP_GROUPBOX}, fState{GBS_XXXXXX}, RClient, @RClipMain);
|
DrawThemeBackground(hThemes, DC, 4{BP_GROUPBOX}, fState{GBS_XXXXXX}, RClient, @RClipMain);
|
||||||
DrawThemeBackground(hThemes, DC, 4{BP_GROUPBOX}, fState{GBS_XXXXXX}, RClient, @RClipLeft);
|
DrawThemeBackground(hThemes, DC, 4{BP_GROUPBOX}, fState{GBS_XXXXXX}, RClient, @RClipLeft);
|
||||||
DrawThemeBackground(hThemes, DC, 4{BP_GROUPBOX}, fState{GBS_XXXXXX}, RClient, @RClipRight);
|
DrawThemeBackground(hThemes, DC, 4{BP_GROUPBOX}, fState{GBS_XXXXXX}, RClient, @RClipRight);
|
||||||
// Drawing GroupBox text
|
// Drawing GroupBox text
|
||||||
if not Sender.fEnabled then GetThemeColor(hThemes, 1, 4, 3803, Color)
|
if not Sender.fEnabled then GetThemeColor(hThemes, {WP_CAPTION} 1, {CS_DISABLED} 3, 3803, Color)
|
||||||
else GetThemeColor(hThemes, 4, 2, 3803, Color);
|
else GetThemeColor(hThemes, {WP_CAPTION} 1, {CS_ACTIVE} 1, 3803, Color);
|
||||||
// Close themes
|
// Close themes
|
||||||
CloseThemeData(hThemes);
|
CloseThemeData(hThemes);
|
||||||
|
|
||||||
@ -608,6 +638,12 @@ var
|
|||||||
Pen : HPEN;
|
Pen : HPEN;
|
||||||
SenderWidth, SenderHeight : integer;
|
SenderWidth, SenderHeight : integer;
|
||||||
Flags: DWORD;
|
Flags: DWORD;
|
||||||
|
_DC : HDC;
|
||||||
|
OldBmp: HBitmap;
|
||||||
|
ic : PIcon;
|
||||||
|
b : PBitmap;
|
||||||
|
i : integer;
|
||||||
|
il : PImageList;
|
||||||
begin
|
begin
|
||||||
// Checking user owner-draw
|
// Checking user owner-draw
|
||||||
if Assigned(Sender.fOnPaint) and (@Sender.fOnPaint <> @WndButtonXPDraw) then
|
if Assigned(Sender.fOnPaint) and (@Sender.fOnPaint <> @WndButtonXPDraw) then
|
||||||
@ -729,8 +765,51 @@ begin
|
|||||||
|
|
||||||
if Bmp <> 0 then
|
if Bmp <> 0 then
|
||||||
begin
|
begin
|
||||||
if Sender.fEnabled then bStyle := ILD_TRANSPARENT else bStyle := ILD_BLEND50;
|
if bboImageList in Sender.fBitBtnOptions then
|
||||||
ImageList_Draw(Bmp, Sender.BitBtnImgIdx, DC, RIcon.Left, RIcon.Top, bStyle);
|
begin
|
||||||
|
bStyle := ILD_TRANSPARENT;
|
||||||
|
if Sender.fEnabled then i := Sender.BitBtnImgIdx
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
ic := NewIcon;
|
||||||
|
ic.fSize := Sender.fGlyphWidth;
|
||||||
|
ic.fHandle := ImageList_GetIcon(Bmp, Sender.BitBtnImgIdx, bStyle);
|
||||||
|
b := NewBitmap(ic.fSize, ic.fSize);
|
||||||
|
b.fHandle := ic.Convert2Bitmap(clBtnFace);
|
||||||
|
ConvertBitmap2Grayscale(b);
|
||||||
|
i := ImageList_Add(Bmp, b.fHandle, 0);
|
||||||
|
Free_And_Nil(b);
|
||||||
|
Free_And_Nil(ic);
|
||||||
|
end;
|
||||||
|
ImageList_Draw(Bmp, i, DC, RIcon.Left, RIcon.Top, bStyle);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
_DC := CreateCompatibleDC( 0 );
|
||||||
|
if Sender.fEnabled then OldBmp := SelectObject( _DC, Bmp)
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
bStyle := ILD_TRANSPARENT;
|
||||||
|
il := NewImageList(Sender.fParent);
|
||||||
|
il.HandleNeeded;
|
||||||
|
i := ImageList_Add(il.fHandle, Bmp, 0);
|
||||||
|
ic := NewIcon;
|
||||||
|
ic.fSize := Sender.fGlyphWidth;
|
||||||
|
ic.fHandle := ImageList_GetIcon(il.fHandle, i, bStyle);
|
||||||
|
b := NewBitmap(ic.fSize, ic.fSize);
|
||||||
|
b.fHandle := ic.Convert2Bitmap(clBtnFace);
|
||||||
|
ConvertBitmap2Grayscale(b);
|
||||||
|
OldBmp := SelectObject( _DC, b.fHandle);
|
||||||
|
Free_And_Nil(b);
|
||||||
|
Free_And_Nil(ic);
|
||||||
|
Free_And_Nil(il);
|
||||||
|
end;
|
||||||
|
StretchBlt( DC, RIcon.Left, RIcon.Top, Sender.fGlyphWidth, Sender.fGlyphHeight,
|
||||||
|
_DC, 0, 0, Sender.fGlyphWidth, Sender.fGlyphHeight,
|
||||||
|
SRCCOPY);
|
||||||
|
SelectObject( _DC, OldBmp );
|
||||||
|
DeleteDC( _DC );
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
// Create font
|
// Create font
|
||||||
F := CreateNewFont(Sender);
|
F := CreateNewFont(Sender);
|
||||||
@ -762,7 +841,7 @@ begin
|
|||||||
CloseThemeData(hThemes);
|
CloseThemeData(hThemes);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if GetFocus = Sender.fHandle then
|
if (GetFocus = Sender.fHandle) and (bboFocusRect in Sender.fBitBtnOptions) then
|
||||||
DrawFocusRect(DC, MakeRect(RClient.Left+4, RClient.Top+4, RClient.Right-4, RClient.Bottom-4));
|
DrawFocusRect(DC, MakeRect(RClient.Left+4, RClient.Top+4, RClient.Right-4, RClient.Bottom-4));
|
||||||
end;
|
end;
|
||||||
//************************* Control MouseEnter event *************************//
|
//************************* Control MouseEnter event *************************//
|
||||||
|
Reference in New Issue
Block a user