TAChart: Add IChartDrawer.SetMonochromeColor procedure

git-svn-id: trunk@40049 -
This commit is contained in:
ask 2013-01-30 06:50:04 +00:00
parent bc9136c398
commit fe0143e2cd
2 changed files with 28 additions and 6 deletions

View File

@ -207,7 +207,7 @@ begin
if FXor then
Color := clWhite
else
Color := AColor;
Color := ColorOrMono(AColor);
Style := psSolid;
if FXor then
Mode := pmXor
@ -244,24 +244,28 @@ procedure TCanvasDrawer.SetBrush(ABrush: TFPCustomBrush);
begin
GetCanvas.Brush.Assign(ABrush);
if FXor then
GetCanvas.Brush.Style := bsClear;
GetCanvas.Brush.Style := bsClear
else if FMonochromeColor <> clTAColor then
GetCanvas.Brush.Color := FMonochromeColor;
end;
procedure TCanvasDrawer.SetBrushColor(AColor: TChartColor);
begin
GetCanvas.Brush.Color := AColor;
GetCanvas.Brush.Color := ColorOrMono(AColor);
end;
procedure TCanvasDrawer.SetBrushParams(
AStyle: TFPBrushStyle; AColor: TChartColor);
begin
GetCanvas.Brush.Color := AColor;
GetCanvas.Brush.Color := ColorOrMono(AColor);
GetCanvas.Brush.Style := AStyle;
end;
procedure TCanvasDrawer.SetFont(AFont: TFPCustomFont);
begin
GetCanvas.Font.Assign(AFont);
if FMonochromeColor <> clTAColor then
GetCanvas.Font.Color := FMonochromeColor;
end;
procedure TCanvasDrawer.SetPen(APen: TFPCustomPen);
@ -280,15 +284,18 @@ begin
else
Pen.Width := APen.Width;
end
else
else begin
GetCanvas.Pen.Assign(APen);
if FMonochromeColor <> clTAColor then
GetCanvas.Pen.Color := FMonochromeColor;
end;
end;
procedure TCanvasDrawer.SetPenParams(AStyle: TFPPenStyle; AColor: TChartColor);
begin
GetCanvas.Pen.Style := AStyle;
if not FXor then
GetCanvas.Pen.Color := AColor;
GetCanvas.Pen.Color := ColorOrMono(AColor);
end;
procedure TCanvasDrawer.SetTransparency(ATransparency: TChartTransparency);

View File

@ -103,6 +103,7 @@ type
procedure SetBrushParams(AStyle: TFPBrushStyle; AColor: TChartColor);
procedure SetFont(AValue: TFPCustomFont);
procedure SetGetFontOrientationFunc(AValue: TGetFontOrientationFunc);
procedure SetMonochromeColor(AColor: TChartColor);
procedure SetPen(APen: TFPCustomPen);
procedure SetPenParams(AStyle: TFPPenStyle; AColor: TChartColor);
procedure SetTransparency(ATransparency: TChartTransparency);
@ -127,8 +128,10 @@ type
strict protected
FChartColorToFPColorFunc: TChartColorToFPColorFunc;
FGetFontOrientationFunc: TGetFontOrientationFunc;
FMonochromeColor: TChartColor;
FTransparency: TChartTransparency;
FXor: Boolean;
function ColorOrMono(AColor: TChartColor): TChartColor; inline;
function GetFontAngle: Double; virtual; abstract;
function SimpleTextExtent(const AText: String): TPoint; virtual; abstract;
procedure SimpleTextOut(AX, AY: Integer; const AText: String); virtual; abstract;
@ -148,6 +151,7 @@ type
procedure SetAntialiasingMode(AValue: TChartAntialiasingMode);
procedure SetDoChartColorToFPColorFunc(AValue: TChartColorToFPColorFunc);
procedure SetGetFontOrientationFunc(AValue: TGetFontOrientationFunc);
procedure SetMonochromeColor(AColor: TChartColor);
procedure SetTransparency(ATransparency: TChartTransparency);
procedure SetXor(AXor: Boolean);
function TextExtent(const AText: String): TPoint;
@ -288,10 +292,16 @@ end;
{ TBasicDrawer }
function TBasicDrawer.ColorOrMono(AColor: TChartColor): TChartColor;
begin
Result := ColorDef(FMonochromeColor, AColor);
end;
constructor TBasicDrawer.Create;
begin
FChartColorToFPColorFunc := @ChartColorToFPColor;
FGetFontOrientationFunc := @DummyGetFontOrientationFunc;
FMonochromeColor := clTAColor;
end;
procedure TBasicDrawer.DrawingBegin(const ABoundingBox: TRect);
@ -349,6 +359,11 @@ begin
FGetFontOrientationFunc := AValue;
end;
procedure TBasicDrawer.SetMonochromeColor(AColor: TChartColor);
begin
FMonochromeColor := AColor;
end;
procedure TBasicDrawer.SetTransparency(ATransparency: TChartTransparency);
begin
FTransparency := ATransparency;