Leandro Diaz 4 years ago
parent
commit
29c879357f
3 changed files with 44 additions and 0 deletions
  1. 16 0
      bgrasvgtheme.pas
  2. 13 0
      bgratheme.pas
  3. 15 0
      bgrathemebutton.pas

+ 16 - 0
bgrasvgtheme.pas

@@ -77,6 +77,8 @@ type
     constructor Create(AOwner: TComponent); override;
     constructor Create(AOwner: TComponent); override;
     destructor Destroy; override;
     destructor Destroy; override;
   public
   public
+    function PreferredButtonHeight(const hasGlyph: boolean): Integer; override;
+    function PreferredButtonWidth(const hasGlyph: boolean): Integer; override;
     procedure DrawButton(Caption: string; State: TBGRAThemeButtonState;
     procedure DrawButton(Caption: string; State: TBGRAThemeButtonState;
       Focused: boolean; ARect: TRect; ASurface: TBGRAThemeSurface; AImageIndex: Integer = -1; AImageList: TBGRASVGImageList = nil); override;
       Focused: boolean; ARect: TRect; ASurface: TBGRAThemeSurface; AImageIndex: Integer = -1; AImageList: TBGRASVGImageList = nil); override;
     procedure DrawRadioButton(Caption: string; State: TBGRAThemeButtonState;
     procedure DrawRadioButton(Caption: string; State: TBGRAThemeButtonState;
@@ -618,6 +620,20 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
+function TBGRASVGTheme.PreferredButtonHeight(const hasGlyph: boolean): Integer;
+begin
+  Result := (FButtonTextSpacing * 2);
+  if (hasGlyph) then
+    Result := Result + FGlyphTextSpacing;
+end;
+
+function TBGRASVGTheme.PreferredButtonWidth(const hasGlyph: boolean): Integer;
+begin
+  Result := (FButtonTextSpacing * 2);
+  if (hasGlyph) then
+    Result := Result + FGlyphTextSpacing;
+end;
+
 procedure TBGRASVGTheme.DrawButton(Caption: string;
 procedure TBGRASVGTheme.DrawButton(Caption: string;
   State: TBGRAThemeButtonState; Focused: boolean; ARect: TRect;
   State: TBGRAThemeButtonState; Focused: boolean; ARect: TRect;
   ASurface: TBGRAThemeSurface; AImageIndex: Integer;
   ASurface: TBGRAThemeSurface; AImageIndex: Integer;

+ 13 - 0
bgratheme.pas

@@ -72,6 +72,9 @@ type
     destructor Destroy; override;
     destructor Destroy; override;
     procedure InvalidateThemedControls;
     procedure InvalidateThemedControls;
 
 
+    function PreferredButtonWidth(const hasGlyph: boolean): Integer; virtual;
+    function PreferredButtonHeight(const hasGlyph: boolean): Integer; virtual;
+
     procedure DrawButton(Caption: string; State: TBGRAThemeButtonState;
     procedure DrawButton(Caption: string; State: TBGRAThemeButtonState;
       Focused: boolean; ARect: TRect; ASurface: TBGRAThemeSurface; AImageIndex: Integer = -1; AImageList: TBGRASVGImageList = nil); virtual;
       Focused: boolean; ARect: TRect; ASurface: TBGRAThemeSurface; AImageIndex: Integer = -1; AImageList: TBGRASVGImageList = nil); virtual;
     procedure DrawRadioButton(Caption: string; State: TBGRAThemeButtonState;
     procedure DrawRadioButton(Caption: string; State: TBGRAThemeButtonState;
@@ -248,6 +251,16 @@ begin
     ThemedControl[i].Invalidate;
     ThemedControl[i].Invalidate;
 end;
 end;
 
 
+function TBGRATheme.PreferredButtonWidth(const hasGlyph: boolean): Integer;
+begin
+
+end;
+
+function TBGRATheme.PreferredButtonHeight(const hasGlyph: boolean): Integer;
+begin
+
+end;
+
 procedure TBGRATheme.DrawButton(Caption: string; State: TBGRAThemeButtonState;
 procedure TBGRATheme.DrawButton(Caption: string; State: TBGRAThemeButtonState;
   Focused: boolean; ARect: TRect; ASurface: TBGRAThemeSurface;
   Focused: boolean; ARect: TRect; ASurface: TBGRAThemeSurface;
   AImageIndex: Integer; AImageList: TBGRASVGImageList);
   AImageIndex: Integer; AImageList: TBGRASVGImageList);

+ 15 - 0
bgrathemebutton.pas

@@ -25,6 +25,8 @@ type
     procedure SetState(AValue: TBGRAThemeButtonState);
     procedure SetState(AValue: TBGRAThemeButtonState);
     procedure TimerHoverElapse(Sender: TObject);
     procedure TimerHoverElapse(Sender: TObject);
   protected
   protected
+    procedure CalculatePreferredSize(var PreferredWidth, PreferredHeight: integer;
+      WithThemeSpace: Boolean); override;
     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
     class function GetControlClassDefaultSize: TSize; override;
     class function GetControlClassDefaultSize: TSize; override;
     procedure MouseEnter; override;
     procedure MouseEnter; override;
@@ -102,6 +104,19 @@ begin
   UpdateHoverState;
   UpdateHoverState;
 end;
 end;
 
 
+procedure TBGRAThemeButton.CalculatePreferredSize(var PreferredWidth,
+  PreferredHeight: integer; WithThemeSpace: Boolean);
+begin
+  inherited CalculatePreferredSize(PreferredWidth, PreferredHeight,
+    WithThemeSpace);
+
+  if AutoSize then
+  begin
+    PreferredWidth := Canvas.TextWidth(Caption) + Theme.PreferredButtonWidth(Assigned(FImageList));
+    PreferredHeight := Canvas.TextHeight(Caption) + Theme.PreferredButtonHeight(Assigned(FImageList));
+  end;
+end;
+
 procedure TBGRAThemeButton.Notification(AComponent: TComponent;
 procedure TBGRAThemeButton.Notification(AComponent: TComponent;
   Operation: TOperation);
   Operation: TOperation);
 begin
 begin