customdrawn: Some more DPI improvements for Android

git-svn-id: trunk@33519 -
This commit is contained in:
sekelsenmat 2011-11-14 07:15:25 +00:00
parent 6015d7f9cc
commit 9c85b9706c
2 changed files with 65 additions and 6 deletions

View File

@ -25,6 +25,18 @@ type
procedure CreateResources; override;
procedure LoadResources; override;
procedure FreeResources; override;
//procedure LoadFallbackPaletteColors; override;
function GetDrawStyle: TCDDrawStyle; override;
// General
function GetMeasures(AMeasureID: Integer): Integer; override;
{ function GetMeasuresEx(ADest: TCanvas; AMeasureID: Integer;
AState: TCDControlState; AStateEx: TCDControlStateEx): Integer; virtual; abstract;
procedure CalculatePreferredSize(ADest: TCanvas; AControlId: TCDControlID;
AState: TCDControlState; AStateEx: TCDControlStateEx;
var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); virtual; abstract;
function GetColor(AColorID: Integer): TColor; virtual; abstract;
function GetClientArea(ADest: TCanvas; ASize: TSize; AControlId: TCDControlID;
AState: TCDControlState; AStateEx: TCDControlStateEx): TRect; virtual; abstract;}
// General drawing routines
{procedure DrawFocusRect(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); override;
procedure DrawRaisedFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); override;
@ -111,12 +123,8 @@ begin
bmpCheckboxChecked.LoadFromLazarusResource('android_checkbox_checked');
// for now hardcoded to ldpi
bmpCheckbox.Canvas.StretchDraw(Bounds(0, 0, 22, 22), bmpCheckbox);
bmpCheckbox.Width := 22;
bmpCheckbox.Height := 22;
bmpCheckboxChecked.Canvas.StretchDraw(Bounds(0, 0, 22, 22), bmpCheckboxChecked);
bmpCheckboxChecked.Width := 22;
bmpCheckboxChecked.Height := 22;
ScaleRasterImage(bmpCheckbox, 160, 96);
ScaleRasterImage(bmpCheckboxChecked, 160, 96);
end;
procedure TCDDrawerAndroid.FreeResources;
@ -125,6 +133,45 @@ begin
bmpCheckboxChecked.Free;
end;
function TCDDrawerAndroid.GetDrawStyle: TCDDrawStyle;
begin
Result := dsAndroid;
end;
function TCDDrawerAndroid.GetMeasures(AMeasureID: Integer): Integer;
begin
case AMeasureID of
{ TCDEDIT_LEFT_TEXT_SPACING: Result := 4;
TCDEDIT_RIGHT_TEXT_SPACING: Result := 3;
TCDEDIT_TOP_TEXT_SPACING: Result := 3;
TCDEDIT_BOTTOM_TEXT_SPACING: Result := 3;}
//
TCDCHECKBOX_SQUARE_HALF_HEIGHT: Result := 9;
TCDCHECKBOX_SQUARE_HEIGHT: Result := 18;
{ //
TCDRADIOBUTTON_CIRCLE_HEIGHT: Result := 15;
//
TCDSCROLLBAR_BUTTON_WIDTH: Result := 17;
TCDSCROLLBAR_LEFT_SPACING: Result := 17;
TCDSCROLLBAR_RIGHT_SPACING: Result := 17;
TCDSCROLLBAR_LEFT_BUTTON_POS: Result := 0;
TCDSCROLLBAR_RIGHT_BUTTON_POS: Result := -17;
//
TCDTRACKBAR_LEFT_SPACING: Result := 9;
TCDTRACKBAR_RIGHT_SPACING: Result := 9;
TCDTRACKBAR_TOP_SPACING: Result := 5;
TCDTRACKBAR_FRAME_HEIGHT: Result := 17;
//
TCDLISTVIEW_COLUMN_LEFT_SPACING: Result := 10;
TCDLISTVIEW_COLUMN_RIGHT_SPACING: Result := 10;
TCDLISTVIEW_COLUMN_TEXT_LEFT_SPACING: Result := 5;
TCDLISTVIEW_LINE_TOP_SPACING: Result := 3;
TCDLISTVIEW_LINE_BOTTOM_SPACING: Result := 3;}
else
Result := inherited GetMeasures(AMeasureID);
end;
end;
procedure TCDDrawerAndroid.DrawTickmark(ADest: TCanvas; ADestPos: TPoint);
begin
// Don't draw anything, tickmarks are impressed into the general images

View File

@ -239,6 +239,7 @@ type
procedure CreateResources; virtual;
procedure LoadResources; virtual;
procedure FreeResources; virtual;
procedure ScaleRasterImage(ARasterImage: TRasterImage; ASourceDPI, ADestDPI: Word);
procedure SetPaletteKind(APaletteKind: TCDPaletteKind);
procedure LoadNativePaletteColors;
procedure LoadFallbackPaletteColors; virtual;
@ -442,6 +443,17 @@ begin
end;
procedure TCDDrawer.ScaleRasterImage(ARasterImage: TRasterImage; ASourceDPI, ADestDPI: Word);
var
lNewWidth, lNewHeight: Int64;
begin
lNewWidth := Round(ARasterImage.Width * ADestDPI / ASourceDPI);
lNewHeight := Round(ARasterImage.Height * ADestDPI / ASourceDPI);
ARasterImage.Canvas.StretchDraw(Bounds(0, 0, lNewWidth, lNewHeight), ARasterImage);
ARasterImage.Width := lNewWidth;
ARasterImage.Height := lNewHeight;
end;
procedure TCDDrawer.SetPaletteKind(APaletteKind: TCDPaletteKind);
var
lIsOnNativeSystem: Boolean = False;