diff --git a/components/fpspreadsheet/source/common/fpsopendocument.pas b/components/fpspreadsheet/source/common/fpsopendocument.pas
index bd31ecaf6..de3334ba3 100644
--- a/components/fpspreadsheet/source/common/fpsopendocument.pas
+++ b/components/fpspreadsheet/source/common/fpsopendocument.pas
@@ -26,14 +26,16 @@ unit fpsOpenDocument;
{$mode objfpc}{$H+}
{$include ..\fps.inc}
-{$define DEBUG_CHART_STYLES}
+{$IFDEF FPS_CHARTS}
+ {$define DEBUG_CHART_STYLES}
+{$ENDIF}
{$WARN 6058 off : Call to subroutine "$1" marked as inline is not inlined}
interface
uses
- {$IFDEF DEBUG_CHART_STYLES}
+ {$IF DEFINED(DEBUG_CHART_STYLES) or DEFINED(FPSpreadDebug)}
LazLoggerBase,
{$ENDIF}
Classes, SysUtils,
@@ -44,8 +46,12 @@ uses
{$ELSE}
fpszipper,
{$ENDIF}
- fpstypes, fpsReaderWriter, fpsutils, fpsHeaderFooterParser,
- fpsNumFormat, fpsxmlcommon, fpsPagelayout, fpsChart;
+ fpstypes, fpsReaderWriter, fpsUtils, fpsHeaderFooterParser,
+ fpsNumFormat, fpsXMLCommon,
+ {$IFDEF FPS_CHARTS}
+ fpsChart,
+ {$ENDIF}
+ fpsPagelayout;
type
TDateModeODS=(
@@ -124,14 +130,18 @@ type
FRepeatedRows: TsRowColRange;
FManifestFileEntries: TFPList;
+ {$IFDEF FPS_CHARTS}
FChartReader: TsBasicSpreadChartReader;
+ {$ENDIF}
procedure ApplyColData;
procedure ApplyStyleToCell(ACell: PCell; AStyleIndex: Integer);
function ApplyStyleToCell(ACell: PCell; AStyleName: String): Boolean;
function ApplyTableStyle(ASheet: TsBasicWorksheet;
AStyleName: String): Boolean;
+ {$IFDEF FPS_CHARTS}
function CollectChartFilesFromManifest: Boolean;
+ {$ENDIF}
function ExtractBoolFromNode(ANode: TDOMNode): Boolean;
function ExtractDateTimeFromNode(ANode: TDOMNode;
ANumFormat: TsNumberFormat; const AFormatStr: String): TDateTime;
@@ -244,8 +254,9 @@ type
FHeaderFooterFontList: TObjectList;
FHasColFormats: Boolean;
FHasRowFormats: Boolean;
-
+ {$IFDEF FPS_CHARTS}
FChartWriter: TsBasicSpreadChartWriter;
+ {$ENDIF}
// Routines to write parts of files
procedure WriteAutomaticStyles(AStream: TStream);
@@ -372,13 +383,14 @@ var
implementation
uses
- {$IFDEF FPSpreadDebug}
- LazLogger,
- {$ENDIF}
StrUtils, Variants, LazFileUtils, URIParser, LazUTF8,
{%H-}fpsPatches,
fpsStrings, fpsStreams, fpsCrypto, fpsClasses, fpSpreadsheet,
- fpsExprParser, fpsImages, fpsConditionalFormat, fpsOpenDocumentChart;
+ fpsExprParser, fpsImages,
+ {$IFDEF FPS_CHARTS}
+ fpsOpenDocumentChart,
+ {$ENDIF}
+ fpsConditionalFormat;
const
LE = LineEnding;
@@ -391,10 +403,10 @@ const
OPENDOC_PATH_SETTINGS = 'settings.xml';
OPENDOC_PATH_STYLES = 'styles.xml';
OPENDOC_PATH_MIMETYPE = 'mimetype';
- {%H-}OPENDOC_PATH_METAINF = 'META-INF/';
+ {%H-}OPENDOC_PATH_METAINF = 'META-INF/';
OPENDOC_PATH_METAINF_MANIFEST = 'META-INF/manifest.xml';
- OPENDOC_PATH_CHART_CONTENT = 'Object %d/content.xml';
- OPENDOC_PATH_CHART_STYLES = 'Object %d/styles.xml';
+ OPENDOC_PATH_CHART_CONTENT = 'Object %d/content.xml';
+ OPENDOC_PATH_CHART_STYLES = 'Object %d/styles.xml';
{ OpenDocument schemas constants }
SCHEMAS_XMLNS_OFFICE = 'urn:oasis:names:tc:opendocument:xmlns:office:1.0';
@@ -1216,7 +1228,9 @@ constructor TsSpreadOpenDocReader.Create(AWorkbook: TsBasicWorkbook);
begin
inherited Create(AWorkbook);
+ {$IFDEF FPS_CHARTS}
FChartReader := TsSpreadOpenDocChartReader.Create(self);
+ {$ENDIF}
InitOpenDocLimitations(FLimitations);
@@ -1283,7 +1297,9 @@ begin
FHeaderFooterFontList.Free;
+ {$IFDEF FPS_CHARTS}
FChartReader.Free;
+ {$ENDIF}
inherited Destroy;
end;
@@ -1485,6 +1501,7 @@ begin
Result := true;
end;
+{$IFDEF FPS_CHARTS}
{ Searches the manifest file entries for the names of files needed by charts.
Returns false if there no charts are found.
The found filenames are passed over to the chart reader for further processing. }
@@ -1532,6 +1549,7 @@ begin
FileList.Free;
end;
end;
+{$ENDIF}
{ Extracts a boolean value from a "boolean" cell node.
Is called from ReadBoolean }
@@ -3178,9 +3196,11 @@ begin
XMLStream.Free;
end;
+ {$IFDEF FPS_CHARTS}
// Reading of charts
if CollectChartFilesFromManifest then
FChartReader.ReadCharts(AStream);
+ {$ENDIF}
// Active sheet
if FActiveSheet <> '' then
@@ -4996,8 +5016,10 @@ procedure TsSpreadOpenDocReader.ReadShape(ANode: TDOMNode;
href: String;
img: PsImage;
entry: TsOpenDocManifestFileEntry;
- chart: TsChart;
handled: Boolean;
+ {$IFDEF FPS_CHARTS}
+ chart: TsChart;
+ {$ENDIF}
begin
nodeName := ANode.NodeName;
x := PtsToMM(HTMLLengthStrToPts(GetAttrValue(ANode, 'svg:x')));
@@ -5011,6 +5033,7 @@ procedure TsSpreadOpenDocReader.ReadShape(ANode: TDOMNode;
href := GetAttrValue(childNode, 'xlink:href');
if href <> '' then
begin
+ {$IFDEF FPS_CHARTS}
if nodeName = 'draw:object' then
begin
// Is it a chart?
@@ -5032,6 +5055,7 @@ procedure TsSpreadOpenDocReader.ReadShape(ANode: TDOMNode;
Continue;
end;
end else
+ {$ENDIF}
if nodeName = 'draw:image' then
begin
// It is an embedded image.
@@ -5806,14 +5830,18 @@ begin
FSContent := CreateTempStream(FWorkbook, 'fpsC');
FSMimeType := CreateTempStream(FWorkbook, 'fpsMT');
FSMetaInfManifest := CreateTempStream(FWorkbook, 'fpsMIM');
+ {$IFDEF FPS_CHARTS}
FChartWriter.CreateStreams;
+ {$ENDIF}
// FSSheets will be created when needed.
end;
{ Destroys the temporary streams that were created by the writer }
procedure TsSpreadOpenDocWriter.DestroyStreams;
begin
+ {$IFDEF FPS_CHARTS}
FChartWriter.DestroyStreams;
+ {$ENDIF}
DestroyTempStream(FSMeta);
DestroyTempStream(FSSettings);
DestroyTempStream(FSStyles);
@@ -5918,7 +5946,9 @@ begin
WriteSettings();
WriteStyles();
WriteContent;
+ {$IFDEF FPS_CHARTS}
FChartWriter.WriteCharts;
+ {$ENDIF}
{ Now compress the files }
FZip := TZipper.Create;
@@ -5931,7 +5961,9 @@ begin
FZip.Entries.AddFileEntry(FSMimetype, OPENDOC_PATH_MIMETYPE);
FZip.Entries.AddFileEntry(FSMetaInfManifest, OPENDOC_PATH_METAINF_MANIFEST);
ZipPictures(FZip);
+ {$IFDEF FPS_CHARTS}
TsSpreadOpenDocChartWriter(FChartWriter).AddChartsToZip(FZip);
+ {$ENDIF}
ResetStreams;
@@ -6128,7 +6160,9 @@ begin
FSContent.Position := 0;
FSMimeType.Position := 0;
FSMetaInfManifest.Position := 0;
+ {$IFDEF FPS_CHARTS}
FChartWriter.ResetStreams;
+ {$ENDIF}
end;
{ Writes the node "office:automatic-styles". Although this node occurs in both
@@ -6237,7 +6271,9 @@ begin
end;
end;
+ {$IFDEF FPS_CHARTS}
TsSpreadOpenDocChartWriter(FChartWriter).AddToMetaInfManifest(FSMetaInfManifest);
+ {$ENDIF}
AppendToStream(FSMetaInfManifest,
'');
@@ -7153,6 +7189,7 @@ end;
procedure TsSpreadOpenDocWriter.WriteGraphicStyles(AStream: TStream);
begin
+ {$IFDEF FPS_CHARTS}
if TsWorkbook(FWorkbook).GetChartCount = 0 then
exit;
@@ -7164,6 +7201,7 @@ begin
'' +
''
);
+ {$ENDIF}
end;
procedure TsSpreadOpenDocWriter.WriteMasterStyles(AStream: TStream);
@@ -7419,6 +7457,7 @@ end;
procedure TsSpreadOpenDocWriter.WriteParagraphStyles(AStream: TStream);
begin
+ {$IFDEF FPS_CHARTS}
if TsWorkbook(FWorkbook).GetChartCount = 0 then
exit;
@@ -7428,6 +7467,7 @@ begin
'' +
''
);
+ {$ENDIF}
end;
function TsSpreadOpenDocWriter.WritePrintContentStyleXMLAsString(
@@ -8169,7 +8209,9 @@ constructor TsSpreadOpenDocWriter.Create(AWorkbook: TsBasicWorkbook);
begin
inherited Create(AWorkbook);
+ {$IFDEF FPS_CHARTS}
FChartWriter := TsSpreadOpenDocChartWriter.Create(self);
+ {$ENDIF}
FColumnStyleList := TFPList.Create;
FRowStyleList := TFPList.Create;
@@ -8196,7 +8238,9 @@ begin
FRichTextFontList.Free; // Do not destroy fonts, they are owned by Workbook
FHeaderFooterFontList.Free;
+ {$IFDEF FPS_CHARTS}
FChartWriter.Free;
+ {$ENDIF}
inherited Destroy;
end;
@@ -9012,8 +9056,6 @@ var
sheet: TsWorksheet absolute ASheet;
i: Integer;
sheetIdx: Integer;
- chart: TsChart;
- series: TsChartSeries;
img: TsImage;
imgType: TsImageType;
r1,c1,r2,c2: Cardinal;
@@ -9023,13 +9065,18 @@ var
xml: String;
target, bookmark: String;
u: TURI;
+ {$IFDEF FPS_CHARTS}
+ chart: TsChart;
+ series: TsChartSeries;
+ {$ENDIF}
begin
- if (sheet.GetImageCount = 0) and (sheet.GetChartCount = 0) then
+ if (sheet.GetImageCount = 0) {$IFDEF FPS_CHARTS}and (sheet.GetChartCount = 0){$ENDIF} then
exit;
AppendToStream(AStream,
'');
+ {$IFDEF FPS_CHARTS}
sheetIdx := sheet.Index;
for i:=0 to TsWorkbook(FWorkbook).GetChartCount-1 do
begin
@@ -9096,6 +9143,7 @@ begin
AppendToStream(AStream, xml);
end;
+ {$ENDIF}
for i:=0 to (ASheet as TsWorksheet).GetImageCount-1 do
begin
diff --git a/components/fpspreadsheet/source/common/fpsopendocumentchart.pas b/components/fpspreadsheet/source/common/fpsopendocumentchart.pas
index 17cb451dc..23204c7d2 100644
--- a/components/fpspreadsheet/source/common/fpsopendocumentchart.pas
+++ b/components/fpspreadsheet/source/common/fpsopendocumentchart.pas
@@ -1,9 +1,12 @@
unit fpsOpenDocumentChart;
{$mode objfpc}{$H+}
+{$include ..\fps.inc}
interface
+{$IFDEF FPS_CHARTS}
+
uses
Classes, SysUtils, StrUtils, Contnrs, FPImage,
{$IF FPC_FULLVERSION >= 20701}
@@ -156,8 +159,12 @@ type
procedure WriteCharts; override;
end;
+{$ENDIF}
+
implementation
+{$IFDEF FPS_CHARTS}
+
uses
fpsOpenDocument;
@@ -4227,5 +4234,7 @@ begin
inc(AStyleID);
end;
+{$ENDIF}
+
end.
diff --git a/components/fpspreadsheet/source/common/fpspreadsheet.pas b/components/fpspreadsheet/source/common/fpspreadsheet.pas
index bf25971fc..984f2f689 100644
--- a/components/fpspreadsheet/source/common/fpspreadsheet.pas
+++ b/components/fpspreadsheet/source/common/fpspreadsheet.pas
@@ -24,7 +24,11 @@ uses
{$endif}{$endif}{$endif}
Classes, SysUtils, fpimage, avglvltree, lconvencoding,
fpsTypes, fpsExprParser, fpsClasses, fpsNumFormat, fpsPageLayout,
- fpsImages, fpsConditionalFormat, fpsChart;
+ fpsImages,
+ {$ifdef FPS_CHARTS}
+ fpsChart,
+ {$endif}
+ fpsConditionalFormat;
type
{ Forward declarations }
@@ -251,7 +255,9 @@ type
procedure WriteNumber(ACell: PCell; ANumber: Double;
ANumFormat: TsNumberFormat; ANumFormatString: String); overload;
+ {$ifdef FPS_CHARTS}
function WriteChartColor(ARow, Acol: Cardinal; AColor: TsColor): PCell;
+ {$endif}
function WriteRPNFormula(ARow, ACol: Cardinal;
AFormula: TsRPNFormula): PCell; overload;
@@ -635,8 +641,10 @@ type
ARowOffs1, AColOffs1: Double; out ARowOffs2, AColOffs2: Double;
out x,y: Double);
+ {$ifdef FPS_CHARTS}
{ Chart support }
function GetChartCount: Integer;
+ {$endif}
{ Protection }
procedure Protect(AEnable: Boolean);
@@ -784,7 +792,9 @@ type
FCellFormatList: TsCellFormatList;
FConditionalFormatList: TsConditionalFormatList;
FEmbeddedObjList: TFPList;
+ {$ifdef FPS_CHARTS}
FCharts: TsChartList;
+ {$endif}
{ Internal methods }
class procedure GetFormatFromFileHeader(const AFileName: TFileName;
@@ -925,11 +935,13 @@ type
function HasEmbeddedSheetImages: Boolean;
procedure RemoveAllEmbeddedObj;
+ {$ifdef FPS_CHARTS}
{ Charts }
function AddChart(ASheet: TsBasicWorksheet; ARow, ACol: Cardinal;
AWidth, AHeight: Double; AOffsetX: Double = 0.0; AOffsetY: Double = 0.0): TsChart;
function GetChartByIndex(AIndex: Integer): TsChart;
function GetChartCount: Integer;
+ {$endif}
{ Utilities }
function ConvertUnits(AValue: Double; AFromUnits, AToUnits: TsSizeUnits): Double;
@@ -1555,6 +1567,7 @@ begin
end;
end;
+{$ifdef FPS_CHARTS}
{@@ ----------------------------------------------------------------------------
Determines the count of charts on this worksheet
-------------------------------------------------------------------------------}
@@ -1572,6 +1585,7 @@ begin
if chart.SheetIndex = idx then inc(Result);
end;
end;
+{$endif}
{@@ ----------------------------------------------------------------------------
Calculates all formulas of the worksheet
@@ -4384,6 +4398,7 @@ begin
end;
end;
+{$ifdef FPS_CHARTS}
{@@ ----------------------------------------------------------------------------
Writes an rgb color value as number to the specified cell. As requested by
the chart module the bytes for red and blue are exchanged.
@@ -4392,7 +4407,7 @@ function TsWorksheet.WriteChartColor(ARow, ACol: Cardinal; AColor: TsColor): PCe
begin
Result := WriteNumber(ARow, ACol, FlipColorBytes(AColor));
end;
-
+{$endif}
{@@ ----------------------------------------------------------------------------
Writes an empty cell
@@ -6556,7 +6571,9 @@ begin
FCellFormatList := TsCellFormatList.Create(false);
FConditionalFormatList := TsConditionalFormatList.Create;
FEmbeddedObjList := TFPList.Create;
+ {$ifdef FPS_CHARTS}
FCharts := TsChartList.Create;
+ {$endif}
// Add default cell format
InitFormatRecord(fmt);
@@ -6589,7 +6606,9 @@ begin
RemoveAllEmbeddedObj;
FEmbeddedObjList.Free;
+ {$ifdef FPS_CHARTS}
FCharts.Free;
+ {$endif}
inherited Destroy;
end;
@@ -7807,7 +7826,10 @@ end;
{$include fpspreadsheet_hyperlinks.inc} // hyperlinks
{$include fpspreadsheet_embobj.inc} // embedded objects
{$include fpspreadsheet_clipbrd.inc} // clipboard access
+
+{$ifdef FPS_CHARTS}
{$include fpspreadsheet_chart.inc} // chart support
+{$endif}
end. {** End Unit: fpspreadsheet }
diff --git a/components/fpspreadsheet/source/common/fpsreaderwriter.pas b/components/fpspreadsheet/source/common/fpsreaderwriter.pas
index efdb075de..d47be1e30 100644
--- a/components/fpspreadsheet/source/common/fpsreaderwriter.pas
+++ b/components/fpspreadsheet/source/common/fpsreaderwriter.pas
@@ -19,6 +19,8 @@ unit fpsReaderWriter;
{$mode delphi}{$H+}
{$endif}
+{$include ..\fps.inc}
+
interface
uses
@@ -197,6 +199,7 @@ type
property NumFormatList: TStringList read FNumFormatList;
end;
+ {$IFDEF FPS_CHARTS}
{@@ Helper class for the spreadsheet reader to keep processing of charts
out of the main reader unit. }
TsBasicSpreadChartReader = class
@@ -221,6 +224,7 @@ type
procedure WriteCharts; virtual; abstract;
property Writer: TsBasicSpreadWriter read FWriter;
end;
+ {$ENDIF}
type
TsSpreadFileAccess = (faRead, faWrite);
@@ -937,6 +941,7 @@ begin
end;
+{$IFDEF FPS_CHARTS}
{------------------------------------------------------------------------------}
{ TsBasicSpreadChartReader }
{------------------------------------------------------------------------------}
@@ -957,6 +962,7 @@ constructor TsBasicSpreadChartWriter.Create(AWriter: TsBasicSpreadWriter);
begin
FWriter := AWriter;
end;
+{$ENDIF}
{------------------------------------------------------------------------------}
diff --git a/components/fpspreadsheet/source/common/fpsxmlcommon.pas b/components/fpspreadsheet/source/common/fpsxmlcommon.pas
index 1da4b0d04..50b57f211 100644
--- a/components/fpspreadsheet/source/common/fpsxmlcommon.pas
+++ b/components/fpspreadsheet/source/common/fpsxmlcommon.pas
@@ -67,13 +67,6 @@ implementation
uses
LazUTF8,
- (*
- {$IF FPC_FULLVERSION >= 20701}
- zipper,
- {$ELSE}
- fpszipper,
- {$ENDIF}
- *)
fpsStreams, fpsUtils;
{------------------------------------------------------------------------------}
diff --git a/components/fpspreadsheet/source/common/xlsxooxml.pas b/components/fpspreadsheet/source/common/xlsxooxml.pas
index e98decf89..b4e58fd46 100644
--- a/components/fpspreadsheet/source/common/xlsxooxml.pas
+++ b/components/fpspreadsheet/source/common/xlsxooxml.pas
@@ -184,11 +184,13 @@ type
procedure WriteCFColorRangeRule(AStream: TStream; ARule: TsCFColorRangeRule; APriority: Integer);
procedure WriteCFDataBarRule(AStream: TStream; ARule: TsCFDatabarRule; APriority: Integer);
procedure WriteCFIconSetRule(AStream: TStream; ARule: TsCFIconSetRule; APriority: Integer);
+ {$ifdef FPS_CHARTS}
procedure WriteChart(AStream: TStream; AChartIndex: Integer);
procedure WriteChartColors;
procedure WriteChartRels;
procedure WriteCharts;
procedure WriteChartStyles;
+ {$endif}
procedure WriteColBreaks(AStream: TStream; AWorksheet: TsBasicWorksheet);
procedure WriteCols(AStream: TStream; AWorksheet: TsBasicWorksheet);
procedure WriteComments(AWorksheet: TsBasicWorksheet);
@@ -4726,7 +4728,7 @@ begin
end;
// Charts or embedded images next
- if (sheet.GetImageCount > 0) or (book.GetChartCount > 0) then
+ if (sheet.GetImageCount > 0) {$ifdef FPS_CHARTS}or (book.GetChartCount > 0){$endif} then
begin
ADrawing_rId := next_rId;
inc(next_rId);
@@ -5145,7 +5147,7 @@ begin
'');
end;
-
+{$ifdef FPS_CHARTS}
procedure TsSpreadOOXMLWriter.WriteChart(AStream: TStream;
AChartIndex: Integer);
@@ -5246,7 +5248,9 @@ begin
'' + LE
);
end;
+{$endif}
+{$ifdef FPS_CHARTS}
procedure TsSpreadOOXMLWriter.WriteChartColors;
var
i, n: Integer;
@@ -5306,7 +5310,9 @@ begin
);
end;
end;
+{$endif}
+{$ifdef FPS_CHARTS}
{ Write the relationship file for all workbook's chart. The file defines which
xml files contain the ChartStyles and Colors needed by each chart. }
procedure TsSpreadOOXMLWriter.WriteChartRels;
@@ -5332,7 +5338,9 @@ begin
]));
end;
end;
+{$endif}
+{$ifdef FPS_CHARTS}
procedure TsSpreadOOXMLWriter.WriteCharts;
var
i, n: Integer;
@@ -5347,7 +5355,9 @@ begin
WriteChart(FSCharts[i], i);
end;
end;
+{$endif}
+{$ifdef FPS_CHARTS}
procedure TsSpreadOOXMLWriter.WriteChartStyles;
var
i, n: Integer;
@@ -5901,6 +5911,7 @@ begin
);
end;
end;
+{$endif}
procedure TsSpreadOOXMLWriter.WriteColBreaks(AStream: TStream;
AWorksheet: TsBasicWorksheet);
@@ -7217,7 +7228,7 @@ var
sheetIdx: Integer;
chart: TsChart;
begin
- if (sheet.GetImageCount = 0) and (sheet.GetChartCount = 0) then
+ if (sheet.GetImageCount = 0) {$ifdef FPS_CHARTS}and (sheet.GetChartCount = 0){$endif} then
exit;
SetLength(FSDrawings, FCurSheetNum + 1);
@@ -7238,6 +7249,7 @@ begin
inc(rId, 1);
end;
+ {$ifdef FPS_CHARTS}
// Repeat for each chart
sheetIdx := sheet.Index;
j := 1; // Counts the charts in the current sheet
@@ -7251,6 +7263,7 @@ begin
inc(rId);
end;
end;
+ {$endif}
// Close node
AppendToStream(FSDrawings[FCurSheetNum],
@@ -7274,7 +7287,7 @@ var
sheet: TsWorksheet absolute AWorksheet;
sheetIdx: Integer;
begin
- if (sheet.GetImageCount = 0) and (sheet.GetChartCount = 0) then
+ if (sheet.GetImageCount = 0) {$ifdef FPS_CHARTS}and (sheet.GetChartCount = 0){$endif} then
exit;
SetLength(FSDrawingsRels, FCurSheetNum + 1);
@@ -7317,6 +7330,7 @@ begin
inc(rId);
end;
+ {$ifdef FPS_CHARTS}
// Repeat for each chart
sheetIdx := sheet.Index;
for i := 0 to TsWorkbook(FWorkbook).GetChartCount - 1 do
@@ -7331,6 +7345,7 @@ begin
inc(rId);
end;
end;
+ {$endif}
AppendToStream(FSDrawingsRels[FCurSheetNum],
'');
@@ -7697,7 +7712,7 @@ begin
// Anything to write?
if (sheet.Comments.Count = 0) and (sheet.Hyperlinks.Count = 0) and
- (sheet.GetImageCount = 0) and (sheet.GetChartCount = 0) and
+ (sheet.GetImageCount = 0) {$ifdef FPS_CHARTS}and (sheet.GetChartCount = 0){$endif} and
(not (sheet.PageLayout.HasHeaderFooterImages))
then
exit;
@@ -7750,7 +7765,7 @@ begin
// Relationships for charts or embedded images
// relationship with to the ../drawings/drawingX.xml file containing all
// chart/image infos. X is the 1-based sheet index
- if (sheet.GetImageCount > 0) or (sheet.GetChartCount > 0) then
+ if (sheet.GetImageCount > 0) {$ifdef FPS_CHARTS}or (sheet.GetChartCount > 0){$endif} then
AppendToStream(FSSheetRels[FCurSheetNum], Format(
' ' + LineEnding,
[rId_Drawing, FCurSheetNum + 1, SCHEMAS_DRAWING]
@@ -8010,11 +8025,13 @@ begin
'');
end;
+ {$ifdef FPS_CHARTS}
{ Write all charts }
WriteChartRels;
WriteChartStyles;
WriteChartColors;
WriteCharts;
+ {$endif}
{ Workbook relations - Mark relation to all sheets }
WriteWorkbookRels(FSWorkbookRels);
@@ -8064,6 +8081,7 @@ begin
AppendToStream(FSContentTypes,
'' + LineEnding);
+ {$ifdef FPS_CHARTS}
n := 1;
for i:=0 to book.GetWorksheetCount-1 do
begin
@@ -8076,6 +8094,7 @@ begin
inc(n);
end;
end;
+ {$endif}
for i:=1 to book.GetWorksheetCount do
begin
@@ -8488,7 +8507,7 @@ begin
which contains the image/chart-related data of all images/charts in this sheet.
The file in turn requires an entry "drawingX.xml.rels" in the drawings rels
folder }
- if (worksheet.GetImageCount > 0) or (worksheet.GetChartCount > 0) then
+ if (worksheet.GetImageCount > 0) {$ifdef FPS_CHARTS}or (worksheet.GetChartCount > 0){$endif} then
AppendToStream(FSSheets[FCurSheetNum], Format(
'', [rId_Drawing]));
diff --git a/components/fpspreadsheet/source/design/fpsvisualreg.pas b/components/fpspreadsheet/source/design/fpsvisualreg.pas
index 2266c5a7d..0412e6139 100644
--- a/components/fpspreadsheet/source/design/fpsvisualreg.pas
+++ b/components/fpspreadsheet/source/design/fpsvisualreg.pas
@@ -1,6 +1,8 @@
unit fpsvisualreg;
{$MODE objfpc}{$H+}
+
+{$INCLUDE ..\fps.inc}
{$DEFINE REGISTER_ALL_FILE_FORMATS}
{$R ../../resource/fpsvisualreg.res}
@@ -19,7 +21,12 @@ uses
{$IFDEF REGISTER_ALL_FILE_FORMATS}
{%H-}fpsallformats,
{$ENDIF}
- fpspreadsheetctrls, fpspreadsheetgrid, fpspreadsheetchart, fpsactions;
+ fpspreadsheetctrls,
+ fpspreadsheetgrid,
+ {$IFDEF FPS_CHARTS}
+ fpspreadsheetchart,
+ {$ENDIF}
+ fpsactions;
{@@ ----------------------------------------------------------------------------
Registers the visual spreadsheet components in the Lazarus component palette,
@@ -35,9 +42,11 @@ begin
TsSpreadsheetInspector
]);
+ {$ifdef FPS_CHARTS}
RegisterComponents('Chart', [
TsWorkbookChartSource
]);
+ {$endif}
RegisterActions('FPSpreadsheet', [
// Worksheet-releated actions
diff --git a/components/fpspreadsheet/source/fps.inc b/components/fpspreadsheet/source/fps.inc
index d2ff3b046..b656afcea 100644
--- a/components/fpspreadsheet/source/fps.inc
+++ b/components/fpspreadsheet/source/fps.inc
@@ -67,3 +67,5 @@
Therefore, the following define must be activated if FPC is v3.3 or older. }
{$DEFINE FPS_PATCHED_ZIPPER}
+{ The next define activates chart support. }
+{$DEFINE FPS_CHARTS}
diff --git a/components/fpspreadsheet/source/visual/fpspreadsheetchart.pas b/components/fpspreadsheet/source/visual/fpspreadsheetchart.pas
index 6b100808c..05110afb4 100644
--- a/components/fpspreadsheet/source/visual/fpspreadsheetchart.pas
+++ b/components/fpspreadsheet/source/visual/fpspreadsheetchart.pas
@@ -13,9 +13,12 @@ LICENSE: See the file COPYING.modifiedLGPL.txt, included in the Lazarus
unit fpspreadsheetchart;
{$mode objfpc}{$H+}
+{$include ..\fps.inc}
interface
+{$ifdef FPS_CHARTS}
+
uses
// RTL/FCL
Classes, Contnrs, SysUtils, Types, FPCanvas,
@@ -191,9 +194,12 @@ type
procedure Convert_sChartLine_to_Pen(AChart: TsChart; ALine: TsChartLine; APen: TPen);
+{$endif}
implementation
+{$ifdef FPS_CHARTS}
+
uses
Math;
@@ -2451,4 +2457,6 @@ begin
AChartSeries.TickWidthStyle := twsPercentMin;
end;
+{$ENDIF}
+
end.
diff --git a/components/fpspreadsheet/source/visual/fpspreadsheetctrls.pas b/components/fpspreadsheet/source/visual/fpspreadsheetctrls.pas
index 39f6398e0..cc7bef7fa 100644
--- a/components/fpspreadsheet/source/visual/fpspreadsheetctrls.pas
+++ b/components/fpspreadsheet/source/visual/fpspreadsheetctrls.pas
@@ -23,6 +23,7 @@
unit fpspreadsheetctrls;
{$MODE objfpc}{$H+}
+{$include ..\fps.inc}
interface