mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 03:59:17 +02:00
win32 themes: rename Dpi->PPI to comply with other LCL methods
This commit is contained in:
parent
843dc303af
commit
6a48c90712
@ -17,22 +17,22 @@ uses
|
||||
type
|
||||
|
||||
TThemeData = array[TThemedElement] of HTHEME;
|
||||
TThemeDpiDataEntry = record
|
||||
DPI: Integer;
|
||||
TThemePPIDataEntry = record
|
||||
PPI: Integer;
|
||||
Data: TThemeData;
|
||||
end;
|
||||
PThemeDpiDataEntry = ^TThemeDpiDataEntry;
|
||||
TThemeDpiData = array of TThemeDpiDataEntry;
|
||||
PThemePPIDataEntry = ^TThemePPIDataEntry;
|
||||
TThemePPIData = array of TThemePPIDataEntry;
|
||||
|
||||
{ TWin32ThemeServices }
|
||||
|
||||
TWin32ThemeServices = class(TThemeServices)
|
||||
private
|
||||
FThemeData: TThemeData; // Holds a list of theme data handles.
|
||||
FThemeDpiData: TThemeDpiData;
|
||||
FThemePPIData: TThemePPIData;
|
||||
protected
|
||||
function GetTheme(Element: TThemedElement): HTHEME;
|
||||
function GetThemeForDPI(Element: TThemedElement; DPI: Integer): HTHEME;
|
||||
function GetTheme(Element: TThemedElement): HTHEME; deprecated 'use GetThemeForPPI';
|
||||
function GetThemeForPPI(Element: TThemedElement; PPI: Integer): HTHEME;
|
||||
function InitThemes: Boolean; override;
|
||||
procedure UnloadThemeData; override;
|
||||
function UseThemes: Boolean; override;
|
||||
@ -71,7 +71,7 @@ type
|
||||
function HasTransparentParts(Details: TThemedElementDetails): Boolean; override;
|
||||
procedure PaintBorder(Control: TObject; EraseLRCorner: Boolean); override;
|
||||
property Theme[Element: TThemedElement]: HTHEME read GetTheme;
|
||||
property ThemeForDPI[Element: TThemedElement; DPI: Integer]: HTHEME read GetThemeForDPI;
|
||||
property ThemeForPPI[Element: TThemedElement; PPI: Integer]: HTHEME read GetThemeForPPI;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@ -164,12 +164,12 @@ procedure TWin32ThemeServices.UnloadThemeData;
|
||||
end;
|
||||
end;
|
||||
var
|
||||
E: TThemeDpiDataEntry;
|
||||
E: TThemePPIDataEntry;
|
||||
begin
|
||||
_Unload(FThemeData);
|
||||
for E in FThemeDpiData do
|
||||
for E in FThemePPIData do
|
||||
_Unload(E.Data);
|
||||
FThemeDpiData := nil;
|
||||
FThemePPIData := nil;
|
||||
end;
|
||||
|
||||
function TWin32ThemeServices.InitThemes: Boolean;
|
||||
@ -379,30 +379,30 @@ begin
|
||||
Result := FThemeData[Element];
|
||||
end;
|
||||
|
||||
function TWin32ThemeServices.GetThemeForDPI(Element: TThemedElement; DPI: Integer): HTHEME;
|
||||
function TWin32ThemeServices.GetThemeForPPI(Element: TThemedElement; PPI: Integer): HTHEME;
|
||||
var
|
||||
I: Integer;
|
||||
E: PThemeDpiDataEntry;
|
||||
E: PThemePPIDataEntry;
|
||||
begin
|
||||
if (WindowsVersion < wv10) or (DPI=0) or (DPI=ScreenInfo.PixelsPerInchX) then
|
||||
if (WindowsVersion < wv10) or (PPI=0) or (PPI=ScreenInfo.PixelsPerInchX) then
|
||||
Exit(GetTheme(Element));
|
||||
|
||||
E := nil;
|
||||
for I := 0 to High(FThemeDpiData) do
|
||||
if FThemeDpiData[I].DPI=DPI then
|
||||
for I := 0 to High(FThemePPIData) do
|
||||
if FThemePPIData[I].PPI=PPI then
|
||||
begin
|
||||
E := @FThemeDpiData[I];
|
||||
E := @FThemePPIData[I];
|
||||
break;
|
||||
end;
|
||||
if not Assigned(E) then
|
||||
begin
|
||||
FThemeDpiData := FThemeDpiData + [Default(TThemeDpiDataEntry)];
|
||||
E := @FThemeDpiData[High(FThemeDpiData)];
|
||||
E^.DPI := DPI;
|
||||
FThemePPIData := FThemePPIData + [Default(TThemePPIDataEntry)];
|
||||
E := @FThemePPIData[High(FThemePPIData)];
|
||||
E^.PPI := PPI;
|
||||
end;
|
||||
|
||||
if (E^.Data[Element] = 0) then
|
||||
E^.Data[Element] := OpenThemeDataForDpi(0, ThemeDataNamesVista[Element], DPI);
|
||||
E^.Data[Element] := OpenThemeDataForDpi(0, ThemeDataNamesVista[Element], PPI);
|
||||
Result := E^.Data[Element];
|
||||
end;
|
||||
|
||||
|
@ -419,7 +419,7 @@ var
|
||||
DPI: Integer;
|
||||
begin
|
||||
DPI := AMenuItem.GetDPI;
|
||||
Theme := TWin32ThemeServices(ThemeServices).ThemeForDPI[teMenu, DPI];
|
||||
Theme := TWin32ThemeServices(ThemeServices).ThemeForPPI[teMenu, DPI];
|
||||
Result := Default(TVistaPopupMenuMetrics);
|
||||
GetThemeMargins(Theme, DC, MENU_POPUPITEM, 0, TMT_CONTENTMARGINS, nil, Result.ItemMargins);
|
||||
GetThemePartSize(Theme, DC, MENU_POPUPCHECK, 0, nil, TS_TRUE, Result.CheckSize);
|
||||
@ -476,7 +476,7 @@ var
|
||||
DPI: Integer;
|
||||
begin
|
||||
DPI := AMenuItem.GetDPI;
|
||||
Theme := TWin32ThemeServices(ThemeServices).ThemeForDPI[teMenu, DPI];
|
||||
Theme := TWin32ThemeServices(ThemeServices).ThemeForPPI[teMenu, DPI];
|
||||
Result := Default(TVistaBarMenuMetrics);
|
||||
GetThemeMargins(Theme, 0, MENU_BARITEM, 0, TMT_CONTENTMARGINS, nil, Result.ItemMargins);
|
||||
|
||||
@ -604,7 +604,7 @@ end;
|
||||
procedure ThemeDrawElement(DC: HDC; Details: TThemedElementDetails; const DPI: Integer; const R: TRect; ClipRect: PRect); inline;
|
||||
begin
|
||||
with Details do
|
||||
DrawThemeBackground(TWin32ThemeServices(ThemeServices).ThemeForDPI[Element, DPI], DC, Part, State, R, ClipRect);
|
||||
DrawThemeBackground(TWin32ThemeServices(ThemeServices).ThemeForPPI[Element, DPI], DC, Part, State, R, ClipRect);
|
||||
end;
|
||||
|
||||
procedure ThemeDrawText(DC: HDC; Details: TThemedElementDetails; const DPI: Integer;
|
||||
@ -615,7 +615,7 @@ begin
|
||||
with Details do
|
||||
begin
|
||||
w := UTF8ToUTF16(S);
|
||||
DrawThemeText(TWin32ThemeServices(ThemeServices).ThemeForDPI[Element, DPI], DC, Part, State, PWideChar(w), Length(w), Flags, Flags2, R);
|
||||
DrawThemeText(TWin32ThemeServices(ThemeServices).ThemeForPPI[Element, DPI], DC, Part, State, PWideChar(w), Length(w), Flags, Flags2, R);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user