fpspreadsheet: Adds support for RGB colours
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2750 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
parent
be328215cd
commit
238e173677
@ -541,7 +541,7 @@ begin
|
||||
if (uffBackgroundColor in FFormattingStyles[i].UsedFormattingFields) then
|
||||
begin
|
||||
Result := Result + 'fo:background-color="#'
|
||||
+ FPSColorToHexString(FFormattingStyles[i].BackgroundColor) +'" ';
|
||||
+ FPSColorToHexString(FFormattingStyles[i].BackgroundColor, FFormattingStyles[i].RGBBackgroundColor) +'" ';
|
||||
end;
|
||||
|
||||
if (uffWordWrap in FFormattingStyles[i].UsedFormattingFields) then
|
||||
|
@ -14,7 +14,7 @@ unit fpspreadsheet;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, AVL_Tree, avglvltree, lconvencoding;
|
||||
Classes, SysUtils, fpimage, AVL_Tree, avglvltree, lconvencoding;
|
||||
|
||||
type
|
||||
TsSpreadsheetFormat = (sfExcel2, sfExcel3, sfExcel4, sfExcel5, sfExcel8,
|
||||
@ -146,7 +146,14 @@ type
|
||||
scGrey, // 808080H
|
||||
//
|
||||
scGrey10pct,// E6E6E6H
|
||||
scGrey20pct // CCCCCCH
|
||||
scGrey20pct,// CCCCCCH
|
||||
scOrange, // ffa500
|
||||
scDarkBrown,// a0522d
|
||||
scBrown, // cd853f
|
||||
scBeige, // f5f5dc
|
||||
scWheat, // f5deb3
|
||||
//
|
||||
scRGBCOLOR // Defined via TFPColor
|
||||
);
|
||||
|
||||
{@@ Cell structure for TsWorksheet
|
||||
@ -173,6 +180,7 @@ type
|
||||
TextRotation: TsTextRotation;
|
||||
Border: TsCellBorders;
|
||||
BackgroundColor: TsColor;
|
||||
RGBBackgroundColor: TFPColor; // only valid if BackgroundColor=scRGBCOLOR
|
||||
end;
|
||||
|
||||
PCell = ^TCell;
|
||||
@ -328,7 +336,7 @@ type
|
||||
procedure ListAllFormattingStylesCallback(ACell: PCell; AStream: TStream);
|
||||
procedure ListAllFormattingStyles(AData: TsWorkbook);
|
||||
function ExpandFormula(AFormula: TsFormula): TsExpandedFormula;
|
||||
function FPSColorToHexString(AColor: TsColor): string;
|
||||
function FPSColorToHexString(AColor: TsColor; ARGBColor: TFPColor): string;
|
||||
{ General writing methods }
|
||||
procedure WriteCellCallback(ACell: PCell; AStream: TStream);
|
||||
procedure WriteCellsToStream(AStream: TStream; ACells: TAVLTree);
|
||||
@ -1485,7 +1493,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TsCustomSpreadWriter.FPSColorToHexString(AColor: TsColor): string;
|
||||
function TsCustomSpreadWriter.FPSColorToHexString(AColor: TsColor; ARGBColor: TFPColor): string;
|
||||
begin
|
||||
case AColor of
|
||||
scBlack: Result := '000000';
|
||||
@ -1507,6 +1515,13 @@ begin
|
||||
//
|
||||
scGrey10pct:Result := 'E6E6E6';
|
||||
scGrey20pct:Result := 'CCCCCC';
|
||||
scOrange: Result := 'FFA500';
|
||||
scDarkBrown:Result := 'a0522d';
|
||||
scBrown: Result := 'cd853f';
|
||||
scBeige: Result := 'f5f5dc';
|
||||
scWheat: Result := 'f5deb3';
|
||||
//
|
||||
scRGBCOLOR: Result := Format('%x%x%x', [ARGBColor.Red div $100, ARGBColor.Green div $100, ARGBColor.Blue div $100]);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
@ -257,7 +257,9 @@ begin
|
||||
lFormatStr := LowerCase(Trim(lFormatStr));
|
||||
if lFormatStr = 'color:red' then lCurBackgroundColor := scRED
|
||||
else if lFormatStr = 'color:green' then lCurBackgroundColor := scGREEN
|
||||
else if lFormatStr = 'color:orange' then lCurBackgroundColor := scYELLOW
|
||||
else if lFormatStr = 'color:yellow' then lCurBackgroundColor := scYELLOW
|
||||
//
|
||||
else if lFormatStr = 'color:orange' then lCurBackgroundColor := scOrange
|
||||
else lCurBackgroundColor := scWHITE;
|
||||
lUseBackgroundColor := True;
|
||||
lFormatStr := '';
|
||||
@ -369,12 +371,12 @@ begin
|
||||
begin
|
||||
lCurColor := FWorksheet.ReadBackgroundColor(i, j);
|
||||
case lCurColor of
|
||||
scBlack: lColorStr := 'black';
|
||||
scWhite: lColorStr := 'white';
|
||||
scRed: lColorStr := 'red';
|
||||
scGREEN: lColorStr := 'green';
|
||||
scBLUE: lColorStr := 'blue';
|
||||
scYELLOW: lColorStr := 'yellow';
|
||||
scBlack: lColorStr := 'style="background-color:black;color:white;"';
|
||||
scWhite: lColorStr := 'style="background-color:white;color:black;"';
|
||||
scRed: lColorStr := 'style="background-color:red;color:white;"';
|
||||
scGREEN: lColorStr := 'style="background-color:green;color:white;"';
|
||||
scBLUE: lColorStr := 'style="background-color:blue;color:white;"';
|
||||
scYELLOW: lColorStr := 'style="background-color:yellow;color:black;"';
|
||||
{scMAGENTA, // FF00FFH
|
||||
scCYAN, // 00FFFFH
|
||||
scDarkRed, // 800000H
|
||||
@ -388,8 +390,9 @@ begin
|
||||
//
|
||||
scGrey10pct,// E6E6E6H
|
||||
scGrey20pct // CCCCCCH }
|
||||
scOrange: lColorStr := 'style="background-color:orange;color:white;"';
|
||||
end;
|
||||
lCurStr := 'style="background-color:'+lColorStr+';color:white;" |' + lCurStr
|
||||
lCurStr := lColorStr + ' |' + lCurStr;
|
||||
end;
|
||||
|
||||
if uffBold in lCurUsedFormatting then lCurStr := '!' + lCurStr
|
||||
|
Loading…
Reference in New Issue
Block a user