From 5d1acbd61f9d00ddf2a058e87583e6684183274e Mon Sep 17 00:00:00 2001 From: Fast Reports Date: Mon, 2 Dec 2019 14:00:22 +0300 Subject: [PATCH] * sync 12/2/2019 --- .../ClientApp/package-lock.json | 6 +- .../Directory.Build.targets | 11 + .../FastReport.Core.Data.Couchbase.csproj | 51 ++++ .../FastReport.Data.Couchbase.csproj | 124 ++++----- ...astReport.OpenSource.Data.Couchbase.csproj | 106 ++++--- .../Directory.Build.targets | 11 + .../FastReport.Core.Data.Firebird.csproj | 50 ++++ .../FastReport.Data.Firebird.csproj | 126 ++++----- ...FastReport.OpenSource.Data.Firebird.csproj | 104 ++++--- .../Directory.Build.targets | 11 + .../FastReport.Core.Data.Json.csproj | 50 ++++ .../FastReport.Data.Json.csproj | 124 ++++----- .../Directory.Build.targets | 11 + .../FastReport.Core.Data.MongoDB.csproj | 51 ++++ .../FastReport.Data.MongoDB.csproj | 132 ++++----- .../FastReport.OpenSource.Data.MongoDB.csproj | 116 ++++---- .../Directory.Build.targets | 11 + .../FastReport.Core.Data.MsSql.csproj | 29 ++ .../FastReport.Data.MsSql.csproj | 32 --- .../Directory.Build.targets | 11 + .../FastReport.Core.Data.MySql.csproj | 47 ++++ .../FastReport.Data.MySql.csproj | 121 ++++---- .../Directory.Build.targets | 11 + .../FastReport.Core.Data.OracleODPCore.csproj | 49 ++++ .../FastReport.Data.OracleODPCore.csproj | 127 ++++----- .../Directory.Build.targets | 11 + .../FastReport.Core.Data.Postgres.csproj | 49 ++++ .../FastReport.Data.Postgres.csproj | 129 ++++----- .../Directory.Build.targets | 11 + .../FastReport.Core.Data.RavenDB.csproj | 53 ++++ .../FastReport.Data.RavenDB.csproj | 136 ++++----- .../Directory.Build.targets | 11 + .../FastReport.Core.Data.SQLite.csproj | 55 ++++ .../FastReport.Data.SQLite.csproj | 123 ++++----- .../SQLiteDataConnection.cs | 4 +- FastReport.Base/BandBase.cs | 2 +- FastReport.Base/Barcode/QRCode/BitVector.cs | 43 +-- FastReport.Base/Barcode/QRCode/ByteArray.cs | 18 +- .../Barcode/QRCode/QRCodeWriter.cs | 146 +++++----- FastReport.Base/Border.cs | 23 ++ FastReport.Base/Engine/ReportEngine.Pages.cs | 4 +- FastReport.Base/Export/ExportBase.cs | 12 + FastReport.Base/Export/Html/HTMLExport.cs | 23 +- .../Export/Html/HTMLExportLayers.cs | 35 +-- FastReport.Base/Export/Image/ImageExport.cs | 2 + FastReport.Base/Fills.cs | 39 +++ FastReport.Base/Format/CurrencyFormat.cs | 47 ++-- FastReport.Base/Format/NumberFormat.cs | 40 +-- FastReport.Base/Format/PercentFormat.cs | 47 ++-- FastReport.Base/Matrix/MatrixData.cs | 6 +- FastReport.Base/Matrix/MatrixHeader.cs | 74 ++--- FastReport.Base/Matrix/MatrixObject.cs | 18 +- FastReport.Base/PolyLineObject.cs | 12 +- FastReport.Base/Report.cs | 26 +- FastReport.Base/ReportEventArgs.cs | 17 ++ FastReport.Base/ReportPage.cs | 11 +- FastReport.Base/Table/TableBase.cs | 17 +- FastReport.Base/Table/TableResult.cs | 8 + FastReport.Base/Utils/Config.cs | 8 + FastReport.Base/Utils/Crypter.cs | 178 ++++++------ FastReport.Base/Utils/ExportsOptions.cs | 261 ++++++++++++++++++ FastReport.Base/Utils/RegisteredObjects.cs | 4 +- FastReport.Core.Web/Application/WebUtils.cs | 1 + FastReport.Core.Web/Directory.Build.targets | 11 + .../FastReport.OpenSource.Web.csproj | 73 +++++ FastReport.Core.Web/FastReport.Web.csproj | 166 +++++------ FastReport.OpenSource.sln | 54 +++- FastReport.OpenSource/Utils/Config.Core.cs | 10 + .../Utils/ExportsOptions.Core.cs | 20 ++ FastReport/Resources/en.xml | 7 + .../Data/JsonConnectionTests.cs | 13 +- 71 files changed, 2263 insertions(+), 1317 deletions(-) create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.Couchbase/Directory.Build.targets create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.Couchbase/FastReport.Core.Data.Couchbase.csproj create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.Firebird/Directory.Build.targets create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.Firebird/FastReport.Core.Data.Firebird.csproj create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.Json/Directory.Build.targets create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.Json/FastReport.Core.Data.Json.csproj create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.MongoDB/Directory.Build.targets create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.MongoDB/FastReport.Core.Data.MongoDB.csproj create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.MsSql/Directory.Build.targets create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.MsSql/FastReport.Core.Data.MsSql.csproj delete mode 100644 Extras/Core/FastReport.Data/FastReport.Data.MsSql/FastReport.Data.MsSql.csproj create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.MySql/Directory.Build.targets create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.MySql/FastReport.Core.Data.MySql.csproj create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.OracleODPCore/Directory.Build.targets create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.OracleODPCore/FastReport.Core.Data.OracleODPCore.csproj create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.Postgres/Directory.Build.targets create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.Postgres/FastReport.Core.Data.Postgres.csproj create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.RavenDB/Directory.Build.targets create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.RavenDB/FastReport.Core.Data.RavenDB.csproj create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.SQLite/Directory.Build.targets create mode 100644 Extras/Core/FastReport.Data/FastReport.Data.SQLite/FastReport.Core.Data.SQLite.csproj create mode 100644 FastReport.Base/Utils/ExportsOptions.cs create mode 100644 FastReport.Core.Web/Directory.Build.targets create mode 100644 FastReport.Core.Web/FastReport.OpenSource.Web.csproj create mode 100644 FastReport.OpenSource/Utils/ExportsOptions.Core.cs diff --git a/Demos/OpenSource/SPAOnlineDesigner/ClientApp/package-lock.json b/Demos/OpenSource/SPAOnlineDesigner/ClientApp/package-lock.json index d8fbd73c..a526349f 100644 --- a/Demos/OpenSource/SPAOnlineDesigner/ClientApp/package-lock.json +++ b/Demos/OpenSource/SPAOnlineDesigner/ClientApp/package-lock.json @@ -6546,9 +6546,9 @@ } }, "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { "for-in": "^1.0.2", diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/Directory.Build.targets b/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/Directory.Build.targets new file mode 100644 index 00000000..18cedec9 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/FastReport.Core.Data.Couchbase.csproj b/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/FastReport.Core.Data.Couchbase.csproj new file mode 100644 index 00000000..37ec403f --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/FastReport.Core.Data.Couchbase.csproj @@ -0,0 +1,51 @@ + + + netstandard2.0;net45 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.Couchbase + Represents a connection to Couchbase server for FastReport.Net. + FastReport.Core.Data.Couchbase + https://www.fast-report.com/download/images/frlogo-big.png + reporting, Couchbase, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.Couchbase + FastReport.Data + + + + FRCORE; + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/FastReport.Data.Couchbase.csproj b/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/FastReport.Data.Couchbase.csproj index debcb90a..ae2a0b5f 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/FastReport.Data.Couchbase.csproj +++ b/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/FastReport.Data.Couchbase.csproj @@ -1,75 +1,53 @@ - - - netstandard2.0;net45 - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://www.fast-report.com/en/product/fast-report-net/license - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.Couchbase - Represents a connection to Couchbase server for FastReport.Net. - FastReport.Data.Couchbase - https://www.fast-report.com/download/images/frlogo-big.png - reporting, Couchbase, connection, reports - 1.0.0 - Debug;Release; - FastReport.Data.Couchbase - FastReport.Data - - - - FRCORE; - - - - - - - - - all - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - CouchbaseConnectionEditor.cs - - - - - CouchbaseConnectionEditor.cs - Designer - - - + + net45 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.Couchbase + Represents a connection to Couchbase server for FastReport.Net. + FastReport.Data.Couchbase + https://www.fast-report.com/download/images/frlogo-big.png + reporting, Couchbase, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.Couchbase + FastReport.Data + + + + + + all + + + + + + + + + + + + + + + UserControl + + + CouchbaseConnectionEditor.cs + + + + + CouchbaseConnectionEditor.cs + Designer + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/FastReport.OpenSource.Data.Couchbase.csproj b/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/FastReport.OpenSource.Data.Couchbase.csproj index 28fb9732..edf35784 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/FastReport.OpenSource.Data.Couchbase.csproj +++ b/Extras/Core/FastReport.Data/FastReport.Data.Couchbase/FastReport.OpenSource.Data.Couchbase.csproj @@ -1,58 +1,52 @@ - - - netstandard2.0;net4.5 - true - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://github.com/FastReports/FastReport/blob/master/LICENSE.md - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.Couchbase - Represents a connection to Couchbase server for FastReport.Net. - FastReport.OpenSource.Data.Couchbase - https://www.fast-report.com/download/images/frlogo-big.png - reporting, Couchbase, connection, reports - 1.0.0 - Debug;Release; - FastReport.Data.Couchbase - FastReport.Data - - https://github.com/FastReports/FastReport - - - - FRCORE; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + netstandard2.0;net4.5 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://github.com/FastReports/FastReport/blob/master/LICENSE.md + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.Couchbase + Represents a connection to Couchbase server for FastReport.Net. + FastReport.OpenSource.Data.Couchbase + https://www.fast-report.com/download/images/frlogo-big.png + reporting, Couchbase, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.Couchbase + FastReport.Data + + https://github.com/FastReports/FastReport + + + FRCORE; + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Firebird/Directory.Build.targets b/Extras/Core/FastReport.Data/FastReport.Data.Firebird/Directory.Build.targets new file mode 100644 index 00000000..18cedec9 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.Firebird/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Firebird/FastReport.Core.Data.Firebird.csproj b/Extras/Core/FastReport.Data/FastReport.Data.Firebird/FastReport.Core.Data.Firebird.csproj new file mode 100644 index 00000000..9653c6cb --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.Firebird/FastReport.Core.Data.Firebird.csproj @@ -0,0 +1,50 @@ + + + netstandard2.0;net47 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.Firebird + Represents a connection to Firebird data for FastReport.Net. + FastReport.Core.Data.Firebird + https://www.fast-report.com/download/images/frlogo-big.png + reporting, Firebird, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.Firebird + FastReport.Data + Initial release + + + FRCORE; + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Firebird/FastReport.Data.Firebird.csproj b/Extras/Core/FastReport.Data/FastReport.Data.Firebird/FastReport.Data.Firebird.csproj index 00795cb3..1cc27e7c 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.Firebird/FastReport.Data.Firebird.csproj +++ b/Extras/Core/FastReport.Data/FastReport.Data.Firebird/FastReport.Data.Firebird.csproj @@ -1,76 +1,54 @@ - - - netstandard2.0;net47 - true - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://www.fast-report.com/en/product/fast-report-net/license - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.Firebird - Represents a connection to Firebird data for FastReport.Net. - FastReport.Data.Firebird - https://www.fast-report.com/download/images/frlogo-big.png - reporting, Firebird, connection, reports - 1.0.0 - Debug;Release; - FastReport.Data.Firebird - FastReport.Data - Initial release - - - FRCORE; - - - - - - - all - - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - FirebirdConnectionEditor.cs - - - - - FirebirdConnectionEditor.cs - Designer - - - - - - - - + + net47 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.Firebird + Represents a connection to Firebird data for FastReport.Net. + FastReport.Data.Firebird + https://www.fast-report.com/download/images/frlogo-big.png + reporting, Firebird, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.Firebird + FastReport.Data + Initial release + + + + all + + + + + + + + + + + + + + UserControl + + + FirebirdConnectionEditor.cs + + + + + FirebirdConnectionEditor.cs + Designer + + + + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Firebird/FastReport.OpenSource.Data.Firebird.csproj b/Extras/Core/FastReport.Data/FastReport.Data.Firebird/FastReport.OpenSource.Data.Firebird.csproj index 60cb14d5..d09bde71 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.Firebird/FastReport.OpenSource.Data.Firebird.csproj +++ b/Extras/Core/FastReport.Data/FastReport.Data.Firebird/FastReport.OpenSource.Data.Firebird.csproj @@ -1,59 +1,51 @@ - - - netstandard2.0;net4.7 - true - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://github.com/FastReports/FastReport/blob/master/LICENSE.md - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.Firebird - Represents a connection to Firebird data for FastReport.Net. - FastReport.OpenSource.Data.Firebird - https://www.fast-report.com/download/images/frlogo-big.png - reporting, Firebird, connection, reports - 1.0.0 - Debug;Release; - FastReport.Data.Firebird - FastReport.Data - Initial release + + netstandard2.0;net4.7 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://github.com/FastReports/FastReport/blob/master/LICENSE.md + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.Firebird + Represents a connection to Firebird data for FastReport.Net. + FastReport.OpenSource.Data.Firebird + https://www.fast-report.com/download/images/frlogo-big.png + reporting, Firebird, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.Firebird + FastReport.Data + Initial release https://github.com/FastReports/FastReport - - - FRCORE; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + FRCORE; + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Json/Directory.Build.targets b/Extras/Core/FastReport.Data/FastReport.Data.Json/Directory.Build.targets new file mode 100644 index 00000000..18cedec9 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.Json/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Json/FastReport.Core.Data.Json.csproj b/Extras/Core/FastReport.Data/FastReport.Data.Json/FastReport.Core.Data.Json.csproj new file mode 100644 index 00000000..c01b3553 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.Json/FastReport.Core.Data.Json.csproj @@ -0,0 +1,50 @@ + + + netstandard2.0;net4;net45;net47 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.Json + Represents a connection to Json data for FastReport.Net. + FastReport.Core.Data.Json + https://www.fast-report.com/download/images/frlogo-big.png + reporting, Json, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.Json + FastReport.Data + Fixed bug with Newtonsoft.Json.dll location + + + FRCORE; + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Json/FastReport.Data.Json.csproj b/Extras/Core/FastReport.Data/FastReport.Data.Json/FastReport.Data.Json.csproj index ac2fd577..7bcc5967 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.Json/FastReport.Data.Json.csproj +++ b/Extras/Core/FastReport.Data/FastReport.Data.Json/FastReport.Data.Json.csproj @@ -1,74 +1,54 @@ - - - netstandard2.0;net4;net45;net47 - true - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://www.fast-report.com/en/product/fast-report-net/license - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.Json - Represents a connection to Json data for FastReport.Net. - FastReport.Data.Json - https://www.fast-report.com/download/images/frlogo-big.png - reporting, Json, connection, reports - 1.0.0 - Debug;Release; - FastReport.Data.Json - FastReport.Data - Fixed bug with Newtonsoft.Json.dll location - - - FRCORE; - - - - - - - - - - - all - - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - JsonConnectionEditor.cs - - - - - JsonConnectionEditor.cs - Designer - - + + net4;net45;net47 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.Json + Represents a connection to Json data for FastReport.Net. + FastReport.Data.Json + https://www.fast-report.com/download/images/frlogo-big.png + reporting, Json, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.Json + FastReport.Data + Fixed bug with Newtonsoft.Json.dll location + + + + + + + all + + + + + + + + + + + + + + UserControl + + + JsonConnectionEditor.cs + + + + + JsonConnectionEditor.cs + Designer + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/Directory.Build.targets b/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/Directory.Build.targets new file mode 100644 index 00000000..18cedec9 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/FastReport.Core.Data.MongoDB.csproj b/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/FastReport.Core.Data.MongoDB.csproj new file mode 100644 index 00000000..d59b456f --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/FastReport.Core.Data.MongoDB.csproj @@ -0,0 +1,51 @@ + + + netstandard2.0;net4.5 + false + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.MongoDB + Represents a connection to MongoDB database for FastReport.Net. + FastReport.Core.Data.MongoDB + https://www.fast-report.com/download/images/frlogo-big.png + reporting, MongoDB, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.MongoDB + FastReport.Data + fixed a bug with wrong database name + + + FRCORE; + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/FastReport.Data.MongoDB.csproj b/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/FastReport.Data.MongoDB.csproj index 33fb7ac3..219846a8 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/FastReport.Data.MongoDB.csproj +++ b/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/FastReport.Data.MongoDB.csproj @@ -1,81 +1,55 @@ - - - netstandard2.0;net4.5 - false - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://www.fast-report.com/en/product/fast-report-net/license - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.MongoDB - Represents a connection to MongoDB database for FastReport.Net. - FastReport.Data.MongoDB - https://www.fast-report.com/download/images/frlogo-big.png - reporting, MongoDB, connection, reports - 1.0.0 - Debug;Release; - FastReport.Data.MongoDB - FastReport.Data - fixed a bug with wrong database name - - - FRCORE; - - - - - - - - - - - - - all - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - MongoDBConnectionEditor.cs - - - - - MongoDBConnectionEditor.cs - Designer - - - - - - - - + + net4.5 + false + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.MongoDB + Represents a connection to MongoDB database for FastReport.Net. + FastReport.Data.MongoDB + https://www.fast-report.com/download/images/frlogo-big.png + reporting, MongoDB, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.MongoDB + FastReport.Data + fixed a bug with wrong database name + + + + all + + + + + + + + + + + + + UserControl + + + MongoDBConnectionEditor.cs + + + + + MongoDBConnectionEditor.cs + Designer + + + + + + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/FastReport.OpenSource.Data.MongoDB.csproj b/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/FastReport.OpenSource.Data.MongoDB.csproj index e0e5ca4b..5f94038f 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/FastReport.OpenSource.Data.MongoDB.csproj +++ b/Extras/Core/FastReport.Data/FastReport.Data.MongoDB/FastReport.OpenSource.Data.MongoDB.csproj @@ -1,65 +1,57 @@ - - netstandard2.0;net4.5 - false - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://github.com/FastReports/FastReport/blob/master/LICENSE.md - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.MongoDB - Represents a connection to MongoDB database for FastReport.Net. - FastReport.OpenSource.Data.MongoDB - https://www.fast-report.com/download/images/frlogo-big.png - reporting, MongoDB, connection, reports - 1.0.0 - Debug;Release; - FastReport.Data.MongoDB - FastReport.Data - fixed a bug with wrong database name + + netstandard2.0;net4.5 + false + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://github.com/FastReports/FastReport/blob/master/LICENSE.md + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.MongoDB + Represents a connection to MongoDB database for FastReport.Net. + FastReport.OpenSource.Data.MongoDB + https://www.fast-report.com/download/images/frlogo-big.png + reporting, MongoDB, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.MongoDB + FastReport.Data + fixed a bug with wrong database name https://github.com/FastReports/FastReport - - - - - FRCORE; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + FRCORE; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.MsSql/Directory.Build.targets b/Extras/Core/FastReport.Data/FastReport.Data.MsSql/Directory.Build.targets new file mode 100644 index 00000000..18cedec9 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.MsSql/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.MsSql/FastReport.Core.Data.MsSql.csproj b/Extras/Core/FastReport.Data/FastReport.Data.MsSql/FastReport.Core.Data.MsSql.csproj new file mode 100644 index 00000000..1ecde433 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.MsSql/FastReport.Core.Data.MsSql.csproj @@ -0,0 +1,29 @@ + + + netstandard2.0;net452 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.MsSql + Represents a connection to MS SQL database for FastReport.Net + FastReport.Core.Data.MsSql + https://www.fast-report.com/download/images/frlogo-big.png + reporting, mssql, connection, reports, core + 1.0.0 + Debug;Release; + FastReport.Data.MsSql + FastReport.Data + + + + + + + + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.MsSql/FastReport.Data.MsSql.csproj b/Extras/Core/FastReport.Data/FastReport.Data.MsSql/FastReport.Data.MsSql.csproj deleted file mode 100644 index 42fe4100..00000000 --- a/Extras/Core/FastReport.Data/FastReport.Data.MsSql/FastReport.Data.MsSql.csproj +++ /dev/null @@ -1,32 +0,0 @@ - - - netstandard2.0 - true - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://www.fast-report.com/en/product/fast-report-net/license - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.MsSql - Represents a connection to MS SQL database for FastReport.Net - FastReport.Data.MsSql - https://www.fast-report.com/download/images/frlogo-big.png - reporting, mssql, connection, reports, core - 1.0.0 - Debug;Release; - FastReport.Data.MsSql - FastReport.Data - - - - - - - - - - - - diff --git a/Extras/Core/FastReport.Data/FastReport.Data.MySql/Directory.Build.targets b/Extras/Core/FastReport.Data/FastReport.Data.MySql/Directory.Build.targets new file mode 100644 index 00000000..18cedec9 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.MySql/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.MySql/FastReport.Core.Data.MySql.csproj b/Extras/Core/FastReport.Data/FastReport.Data.MySql/FastReport.Core.Data.MySql.csproj new file mode 100644 index 00000000..6538ecf9 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.MySql/FastReport.Core.Data.MySql.csproj @@ -0,0 +1,47 @@ + + + net452;netstandard2.0 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.MySql + Represents a connection to My SQL database for FastReport.Net. + FastReport.Core.Data.MySql + https://www.fast-report.com/download/images/frlogo-big.png + reporting, mysql, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.MySql + FastReport.Data + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.MySql/FastReport.Data.MySql.csproj b/Extras/Core/FastReport.Data/FastReport.Data.MySql/FastReport.Data.MySql.csproj index af7a43c2..ce985946 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.MySql/FastReport.Data.MySql.csproj +++ b/Extras/Core/FastReport.Data/FastReport.Data.MySql/FastReport.Data.MySql.csproj @@ -1,71 +1,54 @@ - - net4;netstandard2.0 - true - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://www.fast-report.com/en/product/fast-report-net/license - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.MySql - Represents a connection to My SQL database for FastReport.Net. - FastReport.Data.MySql - https://www.fast-report.com/download/images/frlogo-big.png - reporting, mysql, connection, reports - 1.0.0 - Debug;Release; - FastReport.Data.MySql - FastReport.Data - - - - - - - - - - - - all - - - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - MySqlConnectionEditor.cs - - - - - MySqlConnectionEditor.cs - Designer - - + + net4 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.MySql + Represents a connection to My SQL database for FastReport.Net. + FastReport.Data.MySql + https://www.fast-report.com/download/images/frlogo-big.png + reporting, mysql, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.MySql + FastReport.Data + + + + + all + + + + + + + + + + + + + + + + + UserControl + + + MySqlConnectionEditor.cs + + + + + MySqlConnectionEditor.cs + Designer + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.OracleODPCore/Directory.Build.targets b/Extras/Core/FastReport.Data/FastReport.Data.OracleODPCore/Directory.Build.targets new file mode 100644 index 00000000..18cedec9 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.OracleODPCore/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.OracleODPCore/FastReport.Core.Data.OracleODPCore.csproj b/Extras/Core/FastReport.Data/FastReport.Data.OracleODPCore/FastReport.Core.Data.OracleODPCore.csproj new file mode 100644 index 00000000..9b74dc6c --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.OracleODPCore/FastReport.Core.Data.OracleODPCore.csproj @@ -0,0 +1,49 @@ + + + netstandard2.0;net47 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.OracleODPCore + Represents a connection to Oracle database for FastReport.Net. + FastReport.Core.Data.OracleODPCore + https://www.fast-report.com/download/images/frlogo-big.png + reporting, oracle, core, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.OracleODPCore + FastReport.Data + + + + FRCORE; + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.OracleODPCore/FastReport.Data.OracleODPCore.csproj b/Extras/Core/FastReport.Data/FastReport.Data.OracleODPCore/FastReport.Data.OracleODPCore.csproj index 5d101f3a..41563cfb 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.OracleODPCore/FastReport.Data.OracleODPCore.csproj +++ b/Extras/Core/FastReport.Data/FastReport.Data.OracleODPCore/FastReport.Data.OracleODPCore.csproj @@ -1,76 +1,55 @@  - - netstandard2.0;net47 - true - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://www.fast-report.com/en/product/fast-report-net/license - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.OracleODPCore - Represents a connection to Oracle database for FastReport.Net. - FastReport.Data.OracleODPCore - https://www.fast-report.com/download/images/frlogo-big.png - reporting, oracle, core, connection, reports - 1.0.0 - Debug;Release; - FastReport.Data.OracleODPCore - FastReport.Data - - - - - FRCORE; - - - - - - - all - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OracleConnectionEditor.cs - - - - - OracleConnectionEditor.cs - Designer - - - - - UserControl - - - + + net47 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.OracleODPCore + Represents a connection to Oracle database for FastReport.Net. + FastReport.Data.OracleODPCore + https://www.fast-report.com/download/images/frlogo-big.png + reporting, oracle, core, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.OracleODPCore + FastReport.Data + + + + + all + + + + + + + + + + + + + + + + OracleConnectionEditor.cs + + + + + OracleConnectionEditor.cs + Designer + + + + + UserControl + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Postgres/Directory.Build.targets b/Extras/Core/FastReport.Data/FastReport.Data.Postgres/Directory.Build.targets new file mode 100644 index 00000000..18cedec9 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.Postgres/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Postgres/FastReport.Core.Data.Postgres.csproj b/Extras/Core/FastReport.Data/FastReport.Data.Postgres/FastReport.Core.Data.Postgres.csproj new file mode 100644 index 00000000..61b18402 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.Postgres/FastReport.Core.Data.Postgres.csproj @@ -0,0 +1,49 @@ + + + net452;netstandard2.0 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.Postgres + Represents a connection to PostgreSQL database for FastReport.Net. + FastReport.Core.Data.Postgres + https://www.fast-report.com/download/images/frlogo-big.png + reporting, postgres, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.Postgres + FastReport.Data + added system schemas filter + + + FRCORE; + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.Postgres/FastReport.Data.Postgres.csproj b/Extras/Core/FastReport.Data/FastReport.Data.Postgres/FastReport.Data.Postgres.csproj index 4790dc9f..3256573d 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.Postgres/FastReport.Data.Postgres.csproj +++ b/Extras/Core/FastReport.Data/FastReport.Data.Postgres/FastReport.Data.Postgres.csproj @@ -1,76 +1,55 @@ - - - net4;netstandard2.0 - true - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://www.fast-report.com/en/product/fast-report-net/license - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.Postgres - Represents a connection to PostgreSQL database for FastReport.Net. - FastReport.Data.Postgres - https://www.fast-report.com/download/images/frlogo-big.png - reporting, postgres, connection, reports - 1.0.0 - Debug;Release; - FastReport.Data.Postgres - FastReport.Data - added system schemas filter - - - FRCORE; - - - - - - - - - - - all - - - - - - - - - - - - - - - - - - - - - - - - - - - PostgresConnectionEditor.cs - - - - - PostgresConnectionEditor.cs - Designer - - - - - UserControl - - + + + net4 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.Postgres + Represents a connection to PostgreSQL database for FastReport.Net. + FastReport.Data.Postgres + https://www.fast-report.com/download/images/frlogo-big.png + reporting, postgres, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.Postgres + FastReport.Data + added system schemas filter + + + + all + + + + + + + + + + + + + + + + PostgresConnectionEditor.cs + + + + + PostgresConnectionEditor.cs + Designer + + + + + UserControl + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.RavenDB/Directory.Build.targets b/Extras/Core/FastReport.Data/FastReport.Data.RavenDB/Directory.Build.targets new file mode 100644 index 00000000..18cedec9 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.RavenDB/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.RavenDB/FastReport.Core.Data.RavenDB.csproj b/Extras/Core/FastReport.Data/FastReport.Data.RavenDB/FastReport.Core.Data.RavenDB.csproj new file mode 100644 index 00000000..de5d77b4 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.RavenDB/FastReport.Core.Data.RavenDB.csproj @@ -0,0 +1,53 @@ + + + net4.7;netstandard2.0 + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.RavenDB + Represents a connection to RavenDB database for FastReport.Net. + FastReport.Core.Data.RavenDB + https://www.fast-report.com/download/images/frlogo-big.png + reporting, RavenDB, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.RavenDB + FastReport.Data + + + + FRCORE; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.RavenDB/FastReport.Data.RavenDB.csproj b/Extras/Core/FastReport.Data/FastReport.Data.RavenDB/FastReport.Data.RavenDB.csproj index babaa05f..a71dc767 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.RavenDB/FastReport.Data.RavenDB.csproj +++ b/Extras/Core/FastReport.Data/FastReport.Data.RavenDB/FastReport.Data.RavenDB.csproj @@ -1,83 +1,57 @@ - - - - net4.7;netstandard2.0 - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://www.fast-report.com/en/product/fast-report-net/license - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.RavenDB - Represents a connection to RavenDB database for FastReport.Net. - FastReport.Data.RavenDB - https://www.fast-report.com/download/images/frlogo-big.png - reporting, RavenDB, connection, reports - 1.0.0 - Debug;Release; - FastReport.Data.RavenDB - FastReport.Data - - - - FRCORE; - - - - - - - - - - - - all - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - RavenDBConnectionEditor.cs - - - - - RavenDBConnectionEditor.cs - Designer - - - + + net4.7 + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.RavenDB + Represents a connection to RavenDB database for FastReport.Net. + FastReport.Data.RavenDB + https://www.fast-report.com/download/images/frlogo-big.png + reporting, RavenDB, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.RavenDB + FastReport.Data + + + + + all + + + + + + + + + + + + + + + + + + + + + UserControl + + + RavenDBConnectionEditor.cs + + + + + RavenDBConnectionEditor.cs + Designer + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.SQLite/Directory.Build.targets b/Extras/Core/FastReport.Data/FastReport.Data.SQLite/Directory.Build.targets new file mode 100644 index 00000000..18cedec9 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.SQLite/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Extras/Core/FastReport.Data/FastReport.Data.SQLite/FastReport.Core.Data.SQLite.csproj b/Extras/Core/FastReport.Data/FastReport.Data.SQLite/FastReport.Core.Data.SQLite.csproj new file mode 100644 index 00000000..cec7c4a9 --- /dev/null +++ b/Extras/Core/FastReport.Data/FastReport.Data.SQLite/FastReport.Core.Data.SQLite.csproj @@ -0,0 +1,55 @@ + + + net4;netstandard2.0;net46 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.SQLite + Represents a connection to SQLite database for FastReport.Net. + FastReport.Core.Data.SQLite + https://www.fast-report.com/download/images/frlogo-big.png + reporting, SQLite, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.SQLite + FastReport.Data + + + $(PackageTargetFallback);net46 + + + + FRCORE + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.SQLite/FastReport.Data.SQLite.csproj b/Extras/Core/FastReport.Data/FastReport.Data.SQLite/FastReport.Data.SQLite.csproj index c1a81aa9..45b430d6 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.SQLite/FastReport.Data.SQLite.csproj +++ b/Extras/Core/FastReport.Data/FastReport.Data.SQLite/FastReport.Data.SQLite.csproj @@ -1,75 +1,56 @@ - - - net4;netstandard2.0;net46 - true - ../../../FastReport.Plugins.snk - true - Fast Reports Inc. - Fast Reports Inc. - https://www.fast-report.com/en/product/fast-report-net/license - https://www.fast-report.com/en/product/fast-report-net - Fast Reports Inc. - FastReport.Data.SQLite - Represents a connection to SQLite database for FastReport.Net. - FastReport.Data.SQLite - https://www.fast-report.com/download/images/frlogo-big.png - reporting, SQLite, connection, reports - 1.0.0 - Debug;Release; - FastReport.Data.SQLite - FastReport.Data - - + + net4;net46 + true + ../../../FastReport.Plugins.snk + true + Fast Reports Inc. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net/license + https://www.fast-report.com/en/product/fast-report-net + Fast Reports Inc. + FastReport.Data.SQLite + Represents a connection to SQLite database for FastReport.Net. + FastReport.Data.SQLite + https://www.fast-report.com/download/images/frlogo-big.png + reporting, SQLite, connection, reports + 1.0.0 + Debug;Release; + FastReport.Data.SQLite + FastReport.Data + + $(PackageTargetFallback);net46 - - - FRCORE;;DEBUG;NETSTANDARD2_0 - - - - - - - - - all - - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - SQLiteConnectionEditor.cs - - - - - SQLiteConnectionEditor.cs - Designer - - + + + + all + + + + + + + + + + + + + + + + UserControl + + + SQLiteConnectionEditor.cs + + + + + SQLiteConnectionEditor.cs + Designer + + diff --git a/Extras/Core/FastReport.Data/FastReport.Data.SQLite/SQLiteDataConnection.cs b/Extras/Core/FastReport.Data/FastReport.Data.SQLite/SQLiteDataConnection.cs index aab2e2bc..51082fe5 100644 --- a/Extras/Core/FastReport.Data/FastReport.Data.SQLite/SQLiteDataConnection.cs +++ b/Extras/Core/FastReport.Data/FastReport.Data.SQLite/SQLiteDataConnection.cs @@ -97,7 +97,7 @@ private IEnumerable GetColumns(SqliteDataReader reader) { for (int i = 0; i < reader.FieldCount; i++) { - yield return new DataColumn(reader.GetName(i), reader.GetFieldType(i)); + yield return new DataColumn(reader.GetName(i), typeof(String)); } } @@ -152,7 +152,7 @@ public override void FillTableData(DataTable table, string selectCommand, var newRow = table.Rows.Add(); foreach (DataColumn col in table.Columns) { - newRow[col.ColumnName] = reader[col.ColumnName]; + newRow[col.ColumnName] = reader[col.ColumnName].ToString(); } } } diff --git a/FastReport.Base/BandBase.cs b/FastReport.Base/BandBase.cs index 75e888f1..63fa96a2 100644 --- a/FastReport.Base/BandBase.cs +++ b/FastReport.Base/BandBase.cs @@ -305,7 +305,7 @@ internal bool HasBorder internal bool HasFill { - get { return !(Fill is SolidFill) || (Fill as SolidFill).Color != Color.Transparent; } + get { return !Fill.IsTransparent; } } internal DataBand ParentDataBand diff --git a/FastReport.Base/Barcode/QRCode/BitVector.cs b/FastReport.Base/Barcode/QRCode/BitVector.cs index 7b574907..4d149d2e 100644 --- a/FastReport.Base/Barcode/QRCode/BitVector.cs +++ b/FastReport.Base/Barcode/QRCode/BitVector.cs @@ -84,16 +84,20 @@ public void appendBit(int bit) { throw new System.ArgumentException("Bad bit"); } - int numBitsInLastByte = sizeInBits & 0x7; - // We'll expand array if we don't have bits in the last byte. - if (numBitsInLastByte == 0) - { - appendByte(0); - sizeInBits -= 8; - } - // Modify the last byte. - array[sizeInBits >> 3] |= (sbyte) ((bit << (7 - numBitsInLastByte))); - ++sizeInBits; + + unchecked + { + int numBitsInLastByte = sizeInBits & 0x7; + // We'll expand array if we don't have bits in the last byte. + if (numBitsInLastByte == 0) + { + appendByte(0); + sizeInBits -= 8; + } + // Modify the last byte. + array[sizeInBits >> 3] |= (sbyte)((bit << (7 - numBitsInLastByte))); + ++sizeInBits; + } } // Append "numBits" bits in "value" to the bit vector. @@ -158,17 +162,20 @@ public void xor(BitVector other) // run out of room. private void appendByte(int value_Renamed) { - if ((sizeInBits >> 3) == array.Length) - { - sbyte[] newArray = new sbyte[(array.Length << 1)]; + unchecked + { + if ((sizeInBits >> 3) == array.Length) + { + sbyte[] newArray = new sbyte[(array.Length << 1)]; // Redivivus.in Java to c# Porting update // 30/01/2010 // added namespace system - System.Array.Copy(array, 0, newArray, 0, array.Length); - array = newArray; - } - array[sizeInBits >> 3] = (sbyte) value_Renamed; - sizeInBits += 8; + System.Array.Copy(array, 0, newArray, 0, array.Length); + array = newArray; + } + array[sizeInBits >> 3] = (sbyte)value_Renamed; + sizeInBits += 8; + } } } } \ No newline at end of file diff --git a/FastReport.Base/Barcode/QRCode/ByteArray.cs b/FastReport.Base/Barcode/QRCode/ByteArray.cs index 83521829..899d1e4e 100644 --- a/FastReport.Base/Barcode/QRCode/ByteArray.cs +++ b/FastReport.Base/Barcode/QRCode/ByteArray.cs @@ -65,13 +65,19 @@ public ByteArray(sbyte[] byteArray) /// */ public int at(int index) { - return bytes[index] & 0xff; - } - - public void set_Renamed(int index, int value_Renamed) - { - bytes[index] = (sbyte) value_Renamed; + unchecked + { + return bytes[index] & 0xff; + } } + + public void set_Renamed(int index, int value_Renamed) + { + unchecked + { + bytes[index] = (sbyte)value_Renamed; + } + } public int size() { diff --git a/FastReport.Base/Barcode/QRCode/QRCodeWriter.cs b/FastReport.Base/Barcode/QRCode/QRCodeWriter.cs index 01ebd249..976fe66b 100644 --- a/FastReport.Base/Barcode/QRCode/QRCodeWriter.cs +++ b/FastReport.Base/Barcode/QRCode/QRCodeWriter.cs @@ -51,83 +51,85 @@ public static ByteMatrix encode(System.String contents, int width, int height, // 0 == black, 255 == white (i.e. an 8 bit greyscale bitmap). private static ByteMatrix renderResult(QRCode code, int width, int height, bool quietZone) { - ByteMatrix input = code.Matrix; - int inputWidth = input.Width; - int inputHeight = input.Height; - int qrWidth = inputWidth + (quietZone ? QUIET_ZONE_SIZE << 1 : 0); - int qrHeight = inputHeight + (quietZone ? QUIET_ZONE_SIZE << 1 : 0); - int outputWidth = System.Math.Max(width, qrWidth); - int outputHeight = System.Math.Max(height, qrHeight); - - int multiple = System.Math.Min(outputWidth / qrWidth, outputHeight / qrHeight); - // Padding includes both the quiet zone and the extra white pixels to accommodate the requested - // dimensions. For example, if input is 25x25 the QR will be 33x33 including the quiet zone. - // If the requested size is 200x160, the multiple will be 4, for a QR of 132x132. These will - // handle all the padding from 100x100 (the actual QR) up to 200x160. - int leftPadding = (outputWidth - (inputWidth * multiple)) / 2; - int topPadding = (outputHeight - (inputHeight * multiple)) / 2; - - ByteMatrix output = new ByteMatrix(outputWidth, outputHeight); - sbyte[][] outputArray = output.Array; - - // We could be tricky and use the first row in each set of multiple as the temporary storage, - // instead of allocating this separate array. - sbyte[] row = new sbyte[outputWidth]; - - // 1. Write the white lines at the top - for (int y = 0; y < topPadding; y++) - { - setRowColor(outputArray[y], (sbyte) SupportClass.Identity(255)); - } - - // 2. Expand the QR image to the multiple - sbyte[][] inputArray = input.Array; - for (int y = 0; y < inputHeight; y++) - { - // a. Write the white pixels at the left of each row - for (int x = 0; x < leftPadding; x++) - { - row[x] = (sbyte) SupportClass.Identity(255); - } - - // b. Write the contents of this row of the barcode - int offset = leftPadding; - for (int x = 0; x < inputWidth; x++) + unchecked { + ByteMatrix input = code.Matrix; + int inputWidth = input.Width; + int inputHeight = input.Height; + int qrWidth = inputWidth + (quietZone ? QUIET_ZONE_SIZE << 1 : 0); + int qrHeight = inputHeight + (quietZone ? QUIET_ZONE_SIZE << 1 : 0); + int outputWidth = System.Math.Max(width, qrWidth); + int outputHeight = System.Math.Max(height, qrHeight); + + int multiple = System.Math.Min(outputWidth / qrWidth, outputHeight / qrHeight); + // Padding includes both the quiet zone and the extra white pixels to accommodate the requested + // dimensions. For example, if input is 25x25 the QR will be 33x33 including the quiet zone. + // If the requested size is 200x160, the multiple will be 4, for a QR of 132x132. These will + // handle all the padding from 100x100 (the actual QR) up to 200x160. + int leftPadding = (outputWidth - (inputWidth * multiple)) / 2; + int topPadding = (outputHeight - (inputHeight * multiple)) / 2; + + ByteMatrix output = new ByteMatrix(outputWidth, outputHeight); + sbyte[][] outputArray = output.Array; + + // We could be tricky and use the first row in each set of multiple as the temporary storage, + // instead of allocating this separate array. + sbyte[] row = new sbyte[outputWidth]; + + // 1. Write the white lines at the top + for (int y = 0; y < topPadding; y++) + { + setRowColor(outputArray[y], (sbyte)SupportClass.Identity(255)); + } + + // 2. Expand the QR image to the multiple + sbyte[][] inputArray = input.Array; + for (int y = 0; y < inputHeight; y++) + { + // a. Write the white pixels at the left of each row + for (int x = 0; x < leftPadding; x++) + { + row[x] = (sbyte)SupportClass.Identity(255); + } + + // b. Write the contents of this row of the barcode + int offset = leftPadding; + for (int x = 0; x < inputWidth; x++) + { // Redivivus.in Java to c# Porting update - Type cased sbyte // 30/01/2010 - // sbyte value_Renamed = (inputArray[y][x] == 1)?0:(sbyte) SupportClass.Identity(255); + // sbyte value_Renamed = (inputArray[y][x] == 1)?0:(sbyte) SupportClass.Identity(255); sbyte value_Renamed = (sbyte)((inputArray[y][x] == 1) ? 0 : SupportClass.Identity(255)); - for (int z = 0; z < multiple; z++) - { - row[offset + z] = value_Renamed; - } - offset += multiple; + for (int z = 0; z < multiple; z++) + { + row[offset + z] = value_Renamed; + } + offset += multiple; + } + + // c. Write the white pixels at the right of each row + offset = leftPadding + (inputWidth * multiple); + for (int x = offset; x < outputWidth; x++) + { + row[x] = (sbyte)SupportClass.Identity(255); + } + + // d. Write the completed row multiple times + offset = topPadding + (y * multiple); + for (int z = 0; z < multiple; z++) + { + Array.Copy(row, 0, outputArray[offset + z], 0, outputWidth); + } + } + + // 3. Write the white lines at the bottom + int offset2 = topPadding + (inputHeight * multiple); + for (int y = offset2; y < outputHeight; y++) + { + setRowColor(outputArray[y], (sbyte)SupportClass.Identity(255)); + } + return output; } - - // c. Write the white pixels at the right of each row - offset = leftPadding + (inputWidth * multiple); - for (int x = offset; x < outputWidth; x++) - { - row[x] = (sbyte) SupportClass.Identity(255); - } - - // d. Write the completed row multiple times - offset = topPadding + (y * multiple); - for (int z = 0; z < multiple; z++) - { - Array.Copy(row, 0, outputArray[offset + z], 0, outputWidth); - } - } - - // 3. Write the white lines at the bottom - int offset2 = topPadding + (inputHeight * multiple); - for (int y = offset2; y < outputHeight; y++) - { - setRowColor(outputArray[y], (sbyte) SupportClass.Identity(255)); - } - - return output; } private static void setRowColor(sbyte[] row, sbyte value_Renamed) diff --git a/FastReport.Base/Border.cs b/FastReport.Base/Border.cs index 1b655b4a..69839699 100644 --- a/FastReport.Base/Border.cs +++ b/FastReport.Base/Border.cs @@ -465,6 +465,29 @@ private bool ShouldSerializeShadowColor() } #endregion + #region Internal Methods + + internal void ZoomBorder(float zoom) + { + LeftLine.Width *= zoom; + if (leftLine.Width > 0 && leftLine.Width < 1) + LeftLine.Width = 1; + + RightLine.Width *= zoom; + if (rightLine.Width > 0 && rightLine.Width < 1) + RightLine.Width = 1; + + TopLine.Width *= zoom; + if (topLine.Width > 0 && topLine.Width < 1) + TopLine.Width = 1; + + BottomLine.Width *= zoom; + if (bottomLine.Width > 0 && bottomLine.Width < 1) + BottomLine.Width = 1; + } + + #endregion + #region Public Methods /// /// Creates the exact copy of this Border. diff --git a/FastReport.Base/Engine/ReportEngine.Pages.cs b/FastReport.Base/Engine/ReportEngine.Pages.cs index 32cd364c..d6170209 100644 --- a/FastReport.Base/Engine/ReportEngine.Pages.cs +++ b/FastReport.Base/Engine/ReportEngine.Pages.cs @@ -103,8 +103,10 @@ private void ShowPageHeader() private void ShowPageFooter(bool startPage) { if (!FirstPass && - (page.PageFooter.PrintOn & PrintOn.LastPage) > 0 && CurPage == TotalPages - 1 && + page.PageFooter != null && + (page.PageFooter.PrintOn & PrintOn.LastPage) > 0 && + (page.PageFooter.PrintOn & PrintOn.FirstPage) == 0 && startPage) { ShiftLastPage(); diff --git a/FastReport.Base/Export/ExportBase.cs b/FastReport.Base/Export/ExportBase.cs index 908c7009..624c37f7 100644 --- a/FastReport.Base/Export/ExportBase.cs +++ b/FastReport.Base/Export/ExportBase.cs @@ -29,9 +29,20 @@ public partial class ExportBase : Base private bool hasMultipleFiles; private bool shiftNonExportable; private string saveInitialDirectory; + private List generatedStreams; #region Properties + + /// + /// Gets list of generated streams. + /// + public List GeneratedStreams + { + get { return generatedStreams; } + protected set { generatedStreams = value; } + } + /// /// Zoom factor for output file /// @@ -297,6 +308,7 @@ protected virtual string GetFileFilter() /// protected virtual void Start() { + this.Report.OnExportParameters(new ExportParametersEventArgs(this)); } /* diff --git a/FastReport.Base/Export/Html/HTMLExport.cs b/FastReport.Base/Export/Html/HTMLExport.cs index c6dab280..3ead33ea 100644 --- a/FastReport.Base/Export/Html/HTMLExport.cs +++ b/FastReport.Base/Export/Html/HTMLExport.cs @@ -114,7 +114,6 @@ public enum ExportType private float hPos; private NumberFormatInfo numberFormat; - private List generatedStreams; private bool saveStreams; private string onClickTemplate = String.Empty; @@ -365,13 +364,7 @@ public HTMLPageData PrintPageData get { return printPageData; } } - /// - /// Gets list of generated streams. - /// - public List GeneratedStreams - { - get { return generatedStreams; } - } + /// /// Enable or disable saving streams in GeneratedStreams collection. @@ -410,11 +403,11 @@ private void GeneratedUpdate(string filename, Stream stream) if (i == -1) { GeneratedFiles.Add(filename); - generatedStreams.Add(stream); + GeneratedStreams.Add(stream); } else { - generatedStreams[i] = stream; + GeneratedStreams[i] = stream; } } @@ -449,7 +442,7 @@ private void ExportHTMLPageFinal(FastString CSS, FastString Page, HTMLData d, fl { string fileName = singlePage ? singlePageFileName : pageFileName; int i = GeneratedFiles.IndexOf(fileName); - Stream outStream = (i == -1) ? new MemoryStream() : generatedStreams[i]; + Stream outStream = (i == -1) ? new MemoryStream() : GeneratedStreams[i]; DoPage(outStream, documentTitle, CSS, Page); GeneratedUpdate(fileName, outStream); } @@ -581,7 +574,7 @@ private void Init() prevStyleList = null; prevStyleListIndex = 0; picsArchive = new List(); - generatedStreams = new List(); + GeneratedStreams = new List(); } private void StartMHT() @@ -626,7 +619,7 @@ private void FinishSaveStreams() { // do append in memory stream int fileIndex = GeneratedFiles.IndexOf(singlePageFileName); - ExportHTMLIndex(generatedStreams[fileIndex]); + ExportHTMLIndex(GeneratedStreams[fileIndex]); MemoryStream outStream = new MemoryStream(); ExportHTMLNavigator(outStream); GeneratedUpdate(targetIndexPath + navFileName, outStream); @@ -648,6 +641,8 @@ protected override string GetFileFilter() /// protected override void Start() { + base.Start(); + Init(); if (saveStreams) @@ -895,7 +890,7 @@ protected override void Finish() if (!String.IsNullOrEmpty(singlePageFileName)) { int fileIndex = GeneratedFiles.IndexOf(singlePageFileName); - DoPageEnd(generatedStreams[fileIndex]); + DoPageEnd(GeneratedStreams[fileIndex]); } } else diff --git a/FastReport.Base/Export/Html/HTMLExportLayers.cs b/FastReport.Base/Export/Html/HTMLExportLayers.cs index 8235cd07..5682895d 100644 --- a/FastReport.Base/Export/Html/HTMLExportLayers.cs +++ b/FastReport.Base/Export/Html/HTMLExportLayers.cs @@ -11,6 +11,11 @@ public partial class HTMLExport : ExportBase { private bool doPageBreak; + private string GetStyle() + { + return "position:absolute;"; + } + private string GetStyle(Font Font, Color TextColor, Color FillColor, bool RTL, HorzAlign HAlign, Border Border, bool WordWrap, float LineHeight, float Width, float Height, bool Clip) { @@ -295,7 +300,6 @@ private void LayerText(FastString Page, TextObject obj) { case TextRenderType.HtmlParagraph: - using (HtmlTextRenderer htmlTextRenderer = obj.GetHtmlTextRenderer(Zoom, Zoom)) { if (obj.VertAlign == VertAlign.Center) @@ -603,29 +607,16 @@ private void LayerPicture(FastString Page, ReportComponentBase obj, FastString t private void LayerShape(FastString Page, ShapeObject obj, FastString text) { - int styleindex = UpdateCSSTable(obj); - string style = GetStyleTag(styleindex); - string old_text = String.Empty; - float Width, Height; - string pic = GetLayerPicture(obj, out Width, out Height); FastString addstyle = new FastString(64); - if (obj.Shape == ShapeKind.Rectangle || obj.Shape == ShapeKind.RoundRectangle) - { - if (obj.FillColor.A != 0) - addstyle.Append("background:").Append(System.Drawing.ColorTranslator.ToHtml(obj.FillColor)).Append(";"); - addstyle.Append("border-style:solid;"); - if (obj.Border.Width != 3) - addstyle.Append("border-width:").Append(ExportUtils.FloatToString(obj.Border.Width)).Append("px;"); - addstyle.Append("border-color:").Append(System.Drawing.ColorTranslator.ToHtml(obj.Border.Color)).Append(";"); - if (obj.Shape == ShapeKind.RoundRectangle) - addstyle.Append("border-radius:15px;"); - } + + addstyle.Append(GetStyle()); + + addstyle.Append("background: url('" + GetLayerPicture(obj, out Width, out Height) + "');"); float x = obj.Width > 0 ? obj.AbsLeft : (obj.AbsLeft + obj.Width); float y = obj.Height > 0 ? hPos + obj.AbsTop : (hPos + obj.AbsTop + obj.Height); - Layer(Page, obj, x, y, obj.Width, obj.Height, text, style, addstyle); - addstyle.Clear(); + Layer(Page, obj, x, y, obj.Width, obj.Height, text, null, addstyle); } private void LayerBack(FastString Page, ReportComponentBase obj, FastString text) @@ -805,7 +796,7 @@ private void ExportHTMLPageLayeredBegin(HTMLData d) { SolidFill fill = reportPage.Fill as SolidFill; htmlPage.Append("; background-color:"). - Append(fill.Color.A == 0 ? "transparent" : ExportUtils.HTMLColor(fill.Color)); + Append(fill.IsTransparent ? "transparent" : ExportUtils.HTMLColor(fill.Color)); } htmlPage.Append("\">"); @@ -919,9 +910,7 @@ private void ExportBandLayers(Base band) { LayerPicture(htmlPage, obj, null); } - else if (obj is ShapeObject && ((obj as ShapeObject).Shape == ShapeKind.Rectangle || - (obj as ShapeObject).Shape == ShapeKind.RoundRectangle) && - !((obj as ShapeObject).Fill is TextureFill)) + else if (obj is ShapeObject) { LayerShape(htmlPage, obj as ShapeObject, null); } diff --git a/FastReport.Base/Export/Image/ImageExport.cs b/FastReport.Base/Export/Image/ImageExport.cs index 00766cc6..702dcf1f 100644 --- a/FastReport.Base/Export/Image/ImageExport.cs +++ b/FastReport.Base/Export/Image/ImageExport.cs @@ -438,6 +438,8 @@ protected override string GetFileFilter() /// protected override void Start() { + base.Start(); + //init pageNumber = 0; height = 0; diff --git a/FastReport.Base/Fills.cs b/FastReport.Base/Fills.cs index 316d6885..0a6a0c35 100644 --- a/FastReport.Base/Fills.cs +++ b/FastReport.Base/Fills.cs @@ -20,11 +20,20 @@ internal string Name get { return GetType().Name.Replace("Fill", ""); } } + /// + /// Returned true if Color = Transparent + /// + internal abstract bool IsTransparent + { + get; + } + internal bool FloatDiff(float f1, float f2) { return Math.Abs(f1 - f2) > 1e-4; } + /// /// Creates exact copy of this fill. /// @@ -109,6 +118,11 @@ public Color Color set { color = value; } } + internal override bool IsTransparent + { + get { return color.A == 0; } + } + /// public override FillBase Clone() { @@ -201,6 +215,11 @@ public Color EndColor set { endColor = value; } } + internal override bool IsTransparent + { + get { return startColor.A == 0 && endColor.A == 0; } + } + /// /// Gets or sets the angle of the gradient. /// @@ -400,6 +419,11 @@ public PathGradientStyle Style set { style = value; } } + internal override bool IsTransparent + { + get { return centerColor.A == 0 && edgeColor.A == 0; } + } + /// public override FillBase Clone() { @@ -512,6 +536,11 @@ public HatchStyle Style set { style = value; } } + internal override bool IsTransparent + { + get { return foreColor.A == 0 && backColor.A == 0; } + } + /// public override FillBase Clone() { @@ -615,6 +644,11 @@ public bool Hatch set { hatch = value; } } + internal override bool IsTransparent + { + get { return color.A == 0; } + } + /// public override FillBase Clone() { @@ -832,6 +866,11 @@ public int ImageOffsetY set { imageOffsetY = value; } } + internal override bool IsTransparent + { + get { return false; } + } + #endregion // Properties #region Private Methods diff --git a/FastReport.Base/Format/CurrencyFormat.cs b/FastReport.Base/Format/CurrencyFormat.cs index c5e80adb..c2d3ad5f 100644 --- a/FastReport.Base/Format/CurrencyFormat.cs +++ b/FastReport.Base/Format/CurrencyFormat.cs @@ -163,25 +163,35 @@ public override string FormatValue(object value) { if (value is Variant) value = ((Variant)value).Value; - if (UseLocale) - return String.Format("{0:c}", value); - else - return String.Format(GetNumberFormatInfo(), "{0:c}", new object[] { value }); + + return String.Format(GetNumberFormatInfo(), "{0:c}", new object[] { value }); } internal NumberFormatInfo GetNumberFormatInfo() { - if (UseLocale) - return NumberFormatInfo.CurrentInfo; - NumberFormatInfo info = new NumberFormatInfo(); - info.CurrencyDecimalDigits = DecimalDigits; - info.CurrencyDecimalSeparator = DecimalSeparator; - info.CurrencyGroupSizes = new int[] { 3 }; - info.CurrencyGroupSeparator = GroupSeparator; - info.CurrencySymbol = CurrencySymbol; - info.CurrencyPositivePattern = PositivePattern; - info.CurrencyNegativePattern = NegativePattern; - return info; + + NumberFormatInfo info = new NumberFormatInfo(); + if (UseLocale) + { + info.CurrencyDecimalDigits = DecimalDigits; + info.CurrencyDecimalSeparator = NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator; + info.CurrencyGroupSizes = NumberFormatInfo.CurrentInfo.CurrencyGroupSizes; + info.CurrencyGroupSeparator = NumberFormatInfo.CurrentInfo.CurrencyGroupSeparator; + info.CurrencySymbol = NumberFormatInfo.CurrentInfo.CurrencySymbol; + info.CurrencyPositivePattern = NumberFormatInfo.CurrentInfo.CurrencyPositivePattern; + info.CurrencyNegativePattern = NumberFormatInfo.CurrentInfo.CurrencyNegativePattern; + } + else + { + info.CurrencyDecimalDigits = DecimalDigits; + info.CurrencyDecimalSeparator = DecimalSeparator; + info.CurrencyGroupSizes = new int[] { 3 }; + info.CurrencyGroupSeparator = GroupSeparator; + info.CurrencySymbol = CurrencySymbol; + info.CurrencyPositivePattern = PositivePattern; + info.CurrencyNegativePattern = NegativePattern; + } + return info; } internal override string GetSampleValue() @@ -196,10 +206,11 @@ internal override void Serialize(FRWriter writer, string prefix, FormatBase form if (c == null || UseLocale != c.UseLocale) writer.WriteBool(prefix + "UseLocale", UseLocale); + if (c == null || DecimalDigits != c.DecimalDigits) + writer.WriteInt(prefix + "DecimalDigits", DecimalDigits); + if (!UseLocale) - { - if (c == null || DecimalDigits != c.DecimalDigits) - writer.WriteInt(prefix + "DecimalDigits", DecimalDigits); + { if (c == null || DecimalSeparator != c.DecimalSeparator) writer.WriteStr(prefix + "DecimalSeparator", DecimalSeparator); if (c == null || GroupSeparator != c.GroupSeparator) diff --git a/FastReport.Base/Format/NumberFormat.cs b/FastReport.Base/Format/NumberFormat.cs index 31d6224b..68c6fd09 100644 --- a/FastReport.Base/Format/NumberFormat.cs +++ b/FastReport.Base/Format/NumberFormat.cs @@ -117,23 +117,30 @@ public override string FormatValue(object value) { if (value is Variant) value = ((Variant)value).Value; - if (UseLocale) - return String.Format("{0:n}", value); - else - return String.Format(GetNumberFormatInfo(), "{0:n}", new object[] { value }); + + return String.Format(GetNumberFormatInfo(), "{0:n}", new object[] { value }); } internal NumberFormatInfo GetNumberFormatInfo() { - if (UseLocale) - return NumberFormatInfo.CurrentInfo; - NumberFormatInfo info = new NumberFormatInfo(); - info.NumberDecimalDigits = DecimalDigits; - info.NumberDecimalSeparator = DecimalSeparator; - info.NumberGroupSizes = new int[] { 3 }; - info.NumberGroupSeparator = GroupSeparator; - info.NumberNegativePattern = NegativePattern; - return info; + NumberFormatInfo info = new NumberFormatInfo(); + if (UseLocale) + { + info.NumberDecimalDigits = DecimalDigits; + info.NumberDecimalSeparator = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator; + info.NumberGroupSizes = NumberFormatInfo.CurrentInfo.NumberGroupSizes; + info.NumberGroupSeparator = NumberFormatInfo.CurrentInfo.NumberGroupSeparator; + info.NumberNegativePattern = NumberFormatInfo.CurrentInfo.NumberNegativePattern; + } + else + { + info.NumberDecimalDigits = DecimalDigits; + info.NumberDecimalSeparator = DecimalSeparator; + info.NumberGroupSizes = new int[] { 3 }; + info.NumberGroupSeparator = GroupSeparator; + info.NumberNegativePattern = NegativePattern; + } + return info; } internal override string GetSampleValue() @@ -148,10 +155,11 @@ internal override void Serialize(FRWriter writer, string prefix, FormatBase form if (c == null || UseLocale != c.UseLocale) writer.WriteBool(prefix + "UseLocale", UseLocale); + if (c == null || DecimalDigits != c.DecimalDigits) + writer.WriteInt(prefix + "DecimalDigits", DecimalDigits); + if (!UseLocale) - { - if (c == null || DecimalDigits != c.DecimalDigits) - writer.WriteInt(prefix + "DecimalDigits", DecimalDigits); + { if (c == null || DecimalSeparator != c.DecimalSeparator) writer.WriteStr(prefix + "DecimalSeparator", DecimalSeparator); if (c == null || GroupSeparator != c.GroupSeparator) diff --git a/FastReport.Base/Format/PercentFormat.cs b/FastReport.Base/Format/PercentFormat.cs index 39ee02d7..7edf9f87 100644 --- a/FastReport.Base/Format/PercentFormat.cs +++ b/FastReport.Base/Format/PercentFormat.cs @@ -159,20 +159,34 @@ public override string FormatValue(object value) { if (value is Variant) value = ((Variant)value).Value; - if (UseLocale) - return String.Format("{0:p}", value); - else - { + + return String.Format(GetNumberFormatInfo(), "{0:p}", new object[] { value }); + } + + internal NumberFormatInfo GetNumberFormatInfo() + { NumberFormatInfo info = new NumberFormatInfo(); - info.PercentDecimalDigits = DecimalDigits; - info.PercentDecimalSeparator = DecimalSeparator; - info.PercentGroupSizes = new int[] { 3 }; - info.PercentGroupSeparator = GroupSeparator; - info.PercentSymbol = PercentSymbol; - info.PercentPositivePattern = PositivePattern; - info.PercentNegativePattern = NegativePattern; - return String.Format(info, "{0:p}", new object[] { value }); - } + if (UseLocale) + { + info.PercentDecimalDigits = DecimalDigits; + info.PercentDecimalSeparator = NumberFormatInfo.CurrentInfo.PercentDecimalSeparator; + info.PercentGroupSizes = NumberFormatInfo.CurrentInfo.PercentGroupSizes; + info.PercentGroupSeparator = NumberFormatInfo.CurrentInfo.PercentGroupSeparator; + info.PercentSymbol = NumberFormatInfo.CurrentInfo.PercentSymbol; + info.PercentPositivePattern = NumberFormatInfo.CurrentInfo.PercentPositivePattern; + info.PercentNegativePattern = NumberFormatInfo.CurrentInfo.PercentNegativePattern; + } + else + { + info.PercentDecimalDigits = DecimalDigits; + info.PercentDecimalSeparator = DecimalSeparator; + info.PercentGroupSizes = new int[] { 3 }; + info.PercentGroupSeparator = GroupSeparator; + info.PercentSymbol = PercentSymbol; + info.PercentPositivePattern = PositivePattern; + info.PercentNegativePattern = NegativePattern; + } + return info; } internal override string GetSampleValue() @@ -187,10 +201,11 @@ internal override void Serialize(FRWriter writer, string prefix, FormatBase form if (c == null || UseLocale != c.UseLocale) writer.WriteBool(prefix + "UseLocale", UseLocale); + if (c == null || DecimalDigits != c.DecimalDigits) + writer.WriteInt(prefix + "DecimalDigits", DecimalDigits); + if (!UseLocale) - { - if (c == null || DecimalDigits != c.DecimalDigits) - writer.WriteInt(prefix + "DecimalDigits", DecimalDigits); + { if (c == null || DecimalSeparator != c.DecimalSeparator) writer.WriteStr(prefix + "DecimalSeparator", DecimalSeparator); if (c == null || GroupSeparator != c.GroupSeparator) diff --git a/FastReport.Base/Matrix/MatrixData.cs b/FastReport.Base/Matrix/MatrixData.cs index 8944e573..354eed30 100644 --- a/FastReport.Base/Matrix/MatrixData.cs +++ b/FastReport.Base/Matrix/MatrixData.cs @@ -159,11 +159,11 @@ public void SetValue(int columnIndex, int rowIndex, object cellValue) } #endregion - internal MatrixData() + internal MatrixData(MatrixObject matrix) { - columns = new MatrixHeader(); + columns = new MatrixHeader(matrix); columns.Name = "MatrixColumns"; - rows = new MatrixHeader(); + rows = new MatrixHeader(matrix); rows.Name = "MatrixRows"; cells = new MatrixCells(); cells.Name = "MatrixCells"; diff --git a/FastReport.Base/Matrix/MatrixHeader.cs b/FastReport.Base/Matrix/MatrixHeader.cs index 8b1a2977..8f77e0a8 100644 --- a/FastReport.Base/Matrix/MatrixHeader.cs +++ b/FastReport.Base/Matrix/MatrixHeader.cs @@ -14,6 +14,7 @@ public class MatrixHeader : CollectionBase, IFRSerializable private MatrixHeaderItem rootItem; private int nextIndex; private string name; + private readonly MatrixObject matrix; /// /// Gets or sets the element at the specified index. @@ -183,44 +184,48 @@ public int FindOrCreate(object[] address) internal MatrixHeaderItem Find(object[] address, bool create, int dataRowNo) { - // Note that the top header itself does not contain a value. - // It is used as a list of first-level headers only. - MatrixHeaderItem rootItem = RootItem; - - for (int i = 0; i < address.Length; i++) - { - int index = rootItem.Find(address[i], this[i].Sort); - if (index >= 0) - rootItem = rootItem.Items[index]; - else if (create) + // Note that the top header itself does not contain a value. + // It is used as a list of first-level headers only. + MatrixHeaderItem rootItem = RootItem; + + for (int i = 0; i < address.Length; i++) { - // create new item if necessary. - MatrixHeaderItem newItem = new MatrixHeaderItem(rootItem); - newItem.Value = address[i]; - newItem.TemplateColumn = this[i].TemplateColumn; - newItem.TemplateRow = this[i].TemplateRow; - newItem.TemplateCell = this[i].TemplateCell; - newItem.DataRowNo = dataRowNo; - newItem.PageBreak = this[i].PageBreak; + int index = rootItem.Find(address[i], this[i].Sort); + + if (matrix.SplitRows && address.Length == 1 && index >= 0) + rootItem = rootItem.Items[index]; + else if (!matrix.SplitRows && index >= 0) + rootItem = rootItem.Items[index]; + else if (create) + { + // create new item if necessary. + MatrixHeaderItem newItem = new MatrixHeaderItem(rootItem); + newItem.Value = address[i]; + newItem.TemplateColumn = this[i].TemplateColumn; + newItem.TemplateRow = this[i].TemplateRow; + newItem.TemplateCell = this[i].TemplateCell; + newItem.DataRowNo = dataRowNo; + newItem.PageBreak = this[i].PageBreak; - // index is used as a cell address in a matrix - if (i == address.Length - 1) - { - // create index for bottom-level header - newItem.Index = nextIndex; - nextIndex++; - } + // index is used as a cell address in a matrix + if (i == address.Length - 1) + { + // create index for bottom-level header + newItem.Index = nextIndex; + nextIndex++; + } - rootItem.Items.Insert(~index, newItem); - rootItem = newItem; + rootItem.Items.Insert(index >= 0 ? index : ~index, newItem); + rootItem = newItem; + } + else + return null; } - else - return null; - } - return rootItem; + return rootItem; } - + + private void AddTotalItems(MatrixHeaderItem rootItem, int descriptorIndex, bool isTemplate) { if (descriptorIndex >= Count) @@ -284,9 +289,10 @@ public void Deserialize(FRReader reader) } } - internal MatrixHeader() + internal MatrixHeader(MatrixObject matrix) { - rootItem = new MatrixHeaderItem(null); + rootItem = new MatrixHeaderItem(null); + this.matrix = matrix; } } } diff --git a/FastReport.Base/Matrix/MatrixObject.cs b/FastReport.Base/Matrix/MatrixObject.cs index e3b93aaf..ca6c940f 100644 --- a/FastReport.Base/Matrix/MatrixObject.cs +++ b/FastReport.Base/Matrix/MatrixObject.cs @@ -113,6 +113,7 @@ public partial class MatrixObject : TableBase private int columnIndex; private int rowIndex; private MatrixEvenStylePriority matrixEvenStylePriority; + private bool splitRows; #endregion #region Properties @@ -311,6 +312,17 @@ public MatrixEvenStylePriority MatrixEvenStylePriority set { matrixEvenStylePriority = value; } } + /// + /// Gets or sets need split rows. + /// + [Category("Behavior")] + [DefaultValue(false)] + public bool SplitRows + { + get { return splitRows; } + set { splitRows = value; } + } + /// /// Gets or sets a script method name that will be used to handle the /// event. @@ -623,6 +635,7 @@ public override void Assign(Base source) ShowTitle = src.ShowTitle; Style = src.Style; MatrixEvenStylePriority = src.MatrixEvenStylePriority; + SplitRows = src.SplitRows; } /// @@ -656,6 +669,8 @@ public override void Serialize(FRWriter writer) writer.WriteStr("Style", Style); if (MatrixEvenStylePriority != c.MatrixEvenStylePriority) writer.WriteValue("MatrixEvenStylePriority", MatrixEvenStylePriority); + if (SplitRows != c.SplitRows) + writer.WriteValue("SplitRows", SplitRows); if (ManualBuildEvent != c.ManualBuildEvent) writer.WriteStr("ManualBuildEvent", ManualBuildEvent); if (ModifyResultEvent != c.ModifyResultEvent) @@ -847,7 +862,7 @@ public Variant Value(int index) public MatrixObject() { autoSize = true; - data = new MatrixData(); + data = new MatrixData(this); manualBuildEvent = ""; afterTotalsEvent = ""; helper = new MatrixHelper(this); @@ -856,6 +871,7 @@ public MatrixObject() styleSheet.Load(ResourceLoader.GetStream("cross.frss")); style = ""; filter = ""; + splitRows = false; } } } \ No newline at end of file diff --git a/FastReport.Base/PolyLineObject.cs b/FastReport.Base/PolyLineObject.cs index a74b391d..151d0378 100644 --- a/FastReport.Base/PolyLineObject.cs +++ b/FastReport.Base/PolyLineObject.cs @@ -797,6 +797,11 @@ private string Round(float value) return Convert.ToString(Math.Round(value, 4), invariant); } + internal PolyPoint Clone() + { + return new PolyPoint(x, y); + } + #endregion Private Methods } @@ -870,7 +875,12 @@ public void Clear() public PolyPointCollection Clone() { PolyPointCollection result = new PolyPointCollection(); - result.points = new List(points); + + result.points = new List(); + foreach(PolyPoint point in points) + { + result.points.Add(point.Clone()); + } return result; } diff --git a/FastReport.Base/Report.cs b/FastReport.Base/Report.cs index aaf507df..8429d01f 100644 --- a/FastReport.Base/Report.cs +++ b/FastReport.Base/Report.cs @@ -266,6 +266,11 @@ public partial class Report : Base, IParent, ISupportInitialize /// public event EventHandler FinishReport; + /// + /// Occurs before export to set custom export parameters. + /// + public event EventHandler ExportParameters; + /// /// Gets the pages contained in this report. /// @@ -1266,7 +1271,7 @@ public object Calc(string expression, Variant value) DataSourceBase data = cachedItem.dataSource; Column column = cachedItem.column; - object val = ConvertToColumnDataType(column.Value, column.DataType); + object val = ConvertToColumnDataType(column.Value, column.DataType, false); @@ -1296,11 +1301,11 @@ public object Calc(string expression, Variant value) return CalcExpression(expression, value); } - private object ConvertToColumnDataType( object val, Type dataType) + private object ConvertToColumnDataType( object val, Type dataType, bool convertNulls) { if (val == null || val is DBNull) { - if (ConvertNulls) + if (ConvertNulls || convertNulls) val = Converter.ConvertNull(dataType); } else @@ -1387,7 +1392,7 @@ private object GetColumnValue(string complexName, bool convertNull) if (column == null) return null; - return ConvertToColumnDataType(column.Value, column.DataType); + return ConvertToColumnDataType(column.Value, column.DataType, convertNull); } private Variant GetTotalValue(string name, bool convertNull) @@ -1643,6 +1648,19 @@ public void OnFinishReport(EventArgs e) InvokeEvent(FinishReportEvent, new object[] { this, e }); } + /// + /// Runs the Export event. + /// + /// ExportReportEventArgs object. + public void OnExportParameters(ExportParametersEventArgs e) + { + if (ExportParameters != null) + { + ExportParameters(this, e); + } + } + + /// public override void Serialize(FRWriter writer) { diff --git a/FastReport.Base/ReportEventArgs.cs b/FastReport.Base/ReportEventArgs.cs index 77e1dfea..644562b8 100644 --- a/FastReport.Base/ReportEventArgs.cs +++ b/FastReport.Base/ReportEventArgs.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using FastReport.Data; +using FastReport.Export; using System.Data.Common; using System.ComponentModel; @@ -383,4 +384,20 @@ internal GetTypeInstanceEventArgs(Type type) /// The source of the event. /// The event data. public delegate void GetTypeInstanceEventHandler(object sender, GetTypeInstanceEventArgs e); + + /// + /// Event arguments for custom Export parameters + /// + public class ExportParametersEventArgs : EventArgs + { + /// + /// Used to set custom export parameters + /// + public readonly ExportBase Export; + + public ExportParametersEventArgs(ExportBase export) + { + this.Export = export; + } + } } diff --git a/FastReport.Base/ReportPage.cs b/FastReport.Base/ReportPage.cs index 1da0c98c..2b42d4f0 100644 --- a/FastReport.Base/ReportPage.cs +++ b/FastReport.Base/ReportPage.cs @@ -698,8 +698,15 @@ protected override void Dispose(bool disposing) { if (disposing) { - Watermark.Dispose(); - Watermark = null; + if (Subreport != null) + { + Subreport.ReportPage = null; + } + if (Watermark != null) + { + Watermark.Dispose(); + Watermark = null; + } } base.Dispose(disposing); } diff --git a/FastReport.Base/Table/TableBase.cs b/FastReport.Base/Table/TableBase.cs index 41e7de18..6909ee13 100644 --- a/FastReport.Base/Table/TableBase.cs +++ b/FastReport.Base/Table/TableBase.cs @@ -943,13 +943,22 @@ public override float CalcHeight() float rowsHeight = 0; for (int i = 0; i < cell.RowSpan; i++) { - rowsHeight += Rows[y + i].Height; + if (y + i < Rows.Count) + rowsHeight += Rows[y + i].Height; + else + { + // Error, we don't have row, rowSpan has incorrect + cell.RowSpan--; + } } // if cell is bigger than sum of row heights, increase the last row height - TableRow lastRow = Rows[y + cell.RowSpan - 1]; - if (rowsHeight < cellHeight && lastRow.AutoSize) - lastRow.Height += cellHeight - rowsHeight; + if (y + cell.RowSpan - 1 < Rows.Count) + { + TableRow lastRow = Rows[y + cell.RowSpan - 1]; + if (rowsHeight < cellHeight && lastRow.AutoSize) + lastRow.Height += cellHeight - rowsHeight; + } } } } diff --git a/FastReport.Base/Table/TableResult.cs b/FastReport.Base/Table/TableResult.cs index d9c28df3..2442a801 100644 --- a/FastReport.Base/Table/TableResult.cs +++ b/FastReport.Base/Table/TableResult.cs @@ -4,6 +4,7 @@ using FastReport.Engine; using FastReport.Preview; using System.Drawing; +using FastReport.Utils; namespace FastReport.Table { @@ -181,7 +182,14 @@ internal void GeneratePages(object sender, EventArgs e) { TableBase table = obj as TableBase; if (table != null && table.ResultTable != null) + try + { tables.Add(table.Left, table); + } + catch (ArgumentException) + { + throw new ArgumentException(Res.Get("Messages,MatrixLayoutError")); + } } // render tables side-by-side diff --git a/FastReport.Base/Utils/Config.cs b/FastReport.Base/Utils/Config.cs index 1ef196c2..b856c5f9 100644 --- a/FastReport.Base/Utils/Config.cs +++ b/FastReport.Base/Utils/Config.cs @@ -188,6 +188,10 @@ internal static void Init() #else WebMode = true; #endif + if (WebMode) + { + RestoreExportOptions(); + } LoadPlugins(); // init TextRenderingHint.SystemDefault @@ -247,6 +251,7 @@ private static void CurrentDomain_ProcessExit(object sender, EventArgs e) FDoc.AutoIndent = true; SaveUIStyle(); SaveUIOptions(); + SaveExportOptions(); if (!WebMode) { try @@ -303,6 +308,7 @@ private static void LoadConfig() RestoreUIStyle(); RestoreDefaultLanguage(); RestoreUIOptions(); + RestoreExportOptions(); Res.LoadDefaultLocale(); AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit); } @@ -407,6 +413,8 @@ private static void RestoreUIOptions() } } + + #endregion Private Methods } } \ No newline at end of file diff --git a/FastReport.Base/Utils/Crypter.cs b/FastReport.Base/Utils/Crypter.cs index 51f0fae4..15d58bea 100644 --- a/FastReport.Base/Utils/Crypter.cs +++ b/FastReport.Base/Utils/Crypter.cs @@ -238,40 +238,52 @@ public class Murmur3 private void MixBody(ulong k1, ulong k2) { - h1 ^= MixKey1(k1); - h1 = (h1 << 27) | (h1 >> 37); - h1 += h2; - h1 = h1 * 5 + 0x52dce729; - h2 ^= MixKey2(k2); - h2 = (h2 << 31) | (h2 >> 33); - h2 += h1; - h2 = h2 * 5 + 0x38495ab5; + unchecked + { + h1 ^= MixKey1(k1); + h1 = (h1 << 27) | (h1 >> 37); + h1 += h2; + h1 = h1* 5 + 0x52dce729; + h2 ^= MixKey2(k2); + h2 = (h2 << 31) | (h2 >> 33); + h2 += h1; + h2 = h2* 5 + 0x38495ab5; + } } private static ulong MixKey1(ulong k1) { - k1 *= C1; - k1 = (k1 << 31) | (k1 >> 33); - k1 *= C2; + unchecked + { + k1 *= C1; + k1 = (k1 << 31) | (k1 >> 33); + k1 *= C2; + } return k1; } private static ulong MixKey2(ulong k2) { - k2 *= C2; - k2 = (k2 << 33) | (k2 >> 31); - k2 *= C1; + unchecked + { + k2 *= C2; + k2 = (k2 << 33) | (k2 >> 31); + k2 *= C1; + } return k2; } private static ulong MixFinal(ulong k) { - // avalanche bits - k ^= k >> 33; - k *= 0xff51afd7ed558ccdL; - k ^= k >> 33; - k *= 0xc4ceb9fe1a85ec53L; - k ^= k >> 33; + unchecked + { + // avalanche bits + k ^= k >> 33; + k *= 0xff51afd7ed558ccdL; + k ^= k >> 33; + k *= 0xc4ceb9fe1a85ec53L; + k ^= k >> 33; + } return k; } @@ -294,7 +306,7 @@ private void ProcessBytes(byte[] bb) int npos = 0; ulong remaining = (ulong)bb.Length; // read 128 bits, 16 bytes, 2 longs in eacy cycle - while (remaining >= READ_SIZE) + while (remaining >= READ_SIZE) unchecked { npos = pos; ulong k1 = (uint)(bb[npos++] | bb[npos++] << 8 | bb[npos++] << 16 | bb[npos++] << 24); @@ -317,59 +329,62 @@ private void ProcessBytesRemaining(byte[] bb, ulong remaining, int pos) ulong k2 = 0; length += remaining; // little endian (x86) processing - switch (remaining) + unchecked { - case 15: - k2 ^= (ulong)bb[pos + 14] << 48; // fall through - goto case 14; - case 14: - k2 ^= (ulong)bb[pos + 13] << 40; // fall through - goto case 13; - case 13: - k2 ^= (ulong)bb[pos + 12] << 32; // fall through - goto case 12; - case 12: - k2 ^= (ulong)bb[pos + 11] << 24; // fall through - goto case 11; - case 11: - k2 ^= (ulong)bb[pos + 10] << 16; // fall through - goto case 10; - case 10: - k2 ^= (ulong)bb[pos + 9] << 8; // fall through - goto case 9; - case 9: - k2 ^= (ulong)bb[pos + 8]; // fall through - goto case 8; - case 8: - int npos = pos; - k1 ^= (uint)(bb[npos++] | bb[npos++] << 8 | bb[npos++] << 16 | bb[npos++] << 24); - break; - case 7: - k1 ^= (ulong)bb[pos + 6] << 48; // fall through - goto case 6; - case 6: - k1 ^= (ulong)bb[pos + 5] << 40; // fall through - goto case 5; - case 5: - k1 ^= (ulong)bb[pos + 4] << 32; // fall through - goto case 4; - case 4: - k1 ^= (ulong)bb[pos + 3] << 24; // fall through - goto case 3; - case 3: - k1 ^= (ulong)bb[pos + 2] << 16; // fall through - goto case 2; - case 2: - k1 ^= (ulong)bb[pos + 1] << 8; // fall through - goto case 1; - case 1: - k1 ^= (ulong)bb[pos]; // fall through - break; - default: - throw new Exception("Something went wrong with remaining bytes calculation."); + switch (remaining) + { + case 15: + k2 ^= (ulong)bb[pos + 14] << 48; // fall through + goto case 14; + case 14: + k2 ^= (ulong)bb[pos + 13] << 40; // fall through + goto case 13; + case 13: + k2 ^= (ulong)bb[pos + 12] << 32; // fall through + goto case 12; + case 12: + k2 ^= (ulong)bb[pos + 11] << 24; // fall through + goto case 11; + case 11: + k2 ^= (ulong)bb[pos + 10] << 16; // fall through + goto case 10; + case 10: + k2 ^= (ulong)bb[pos + 9] << 8; // fall through + goto case 9; + case 9: + k2 ^= (ulong)bb[pos + 8]; // fall through + goto case 8; + case 8: + int npos = pos; + k1 ^= (uint)(bb[npos++] | bb[npos++] << 8 | bb[npos++] << 16 | bb[npos++] << 24); + break; + case 7: + k1 ^= (ulong)bb[pos + 6] << 48; // fall through + goto case 6; + case 6: + k1 ^= (ulong)bb[pos + 5] << 40; // fall through + goto case 5; + case 5: + k1 ^= (ulong)bb[pos + 4] << 32; // fall through + goto case 4; + case 4: + k1 ^= (ulong)bb[pos + 3] << 24; // fall through + goto case 3; + case 3: + k1 ^= (ulong)bb[pos + 2] << 16; // fall through + goto case 2; + case 2: + k1 ^= (ulong)bb[pos + 1] << 8; // fall through + goto case 1; + case 1: + k1 ^= (ulong)bb[pos]; // fall through + break; + default: + throw new Exception("Something went wrong with remaining bytes calculation."); + } + h1 ^= MixKey1(k1); + h2 ^= MixKey2(k2); } - h1 ^= MixKey1(k1); - h2 ^= MixKey2(k2); } /// @@ -379,14 +394,17 @@ public byte[] Hash { get { - h1 ^= length; - h2 ^= length; - h1 += h2; - h2 += h1; - h1 = Murmur3.MixFinal(h1); - h2 = Murmur3.MixFinal(h2); - h1 += h2; - h2 += h1; + unchecked + { + h1 ^= length; + h2 ^= length; + h1 += h2; + h2 += h1; + h1 = Murmur3.MixFinal(h1); + h2 = Murmur3.MixFinal(h2); + h1 += h2; + h2 += h1; + } byte[] hash = new byte[Murmur3.READ_SIZE]; Array.Copy(BitConverter.GetBytes(h1), 0, hash, 0, 8); Array.Copy(BitConverter.GetBytes(h2), 0, hash, 8, 8); diff --git a/FastReport.Base/Utils/ExportsOptions.cs b/FastReport.Base/Utils/ExportsOptions.cs new file mode 100644 index 00000000..16471a48 --- /dev/null +++ b/FastReport.Base/Utils/ExportsOptions.cs @@ -0,0 +1,261 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace FastReport.Utils +{ + partial class ExportsOptions + { + private delegate List MakeDefaultExportsMenuDelegate(); + + private static ExportsOptions instance = null; + + private List menuNodes; + private MakeDefaultExportsMenuDelegate defaultMenuDelegate; + + public List ExportsMenu { get { return menuNodes; } } + + private ExportsOptions() + { + defaultMenuDelegate = this.DefaultExports; + menuNodes = new List(); + } + + public static ExportsOptions GetInstance() + { + if (instance == null) + { + return instance = new ExportsOptions(); + } + else + { + return instance; + } + } + + public class ExportsTreeNode + { + private const string EXPORT_ITEM_PREFIX = "Export,"; + private const string EXPORT_ITEM_POSTFIX = ",File"; + private const string EXPORT_CATEGORY_PREFIX = "Export,ExportGroups,"; + + private string name; + private List nodes = new List(); + private Type exportType = null; + private int imageIndex = -1; + private ObjectInfo tag = null; + private bool enabled = true; + + public string Name { get { return name; } } + public List Nodes { get { return nodes; } } + public Type ExportType { get { return exportType; } } + public int ImageIndex { get { return imageIndex; } } + public ObjectInfo Tag { get { return tag; } set { tag = value; } } + public bool Enabled { get { return enabled; } + set { tag.Enabled = enabled = value; } } + + public override string ToString() + { + return Res.Get(exportType == null ? EXPORT_CATEGORY_PREFIX + name : + EXPORT_ITEM_PREFIX + name + EXPORT_ITEM_POSTFIX); + } + + public ExportsTreeNode(string name) + { + this.name = name; + } + + public ExportsTreeNode(string name, Type exportType) + { + this.name = name; + this.exportType = exportType; + } + + public ExportsTreeNode(string name, int imageIndex) + { + this.name = name; + this.imageIndex = imageIndex; + } + + public ExportsTreeNode(string name, Type exportType, int imageIndex) + { + this.name = name; + this.exportType = exportType; + this.imageIndex = imageIndex; + } + + public ExportsTreeNode(string name, Type exportType, int imageIndex, bool enabled) + { + this.name = name; + this.exportType = exportType; + this.imageIndex = imageIndex; + this.enabled = enabled; + } + } + + private void SaveMenuTree(XmlItem xi, List nodes) + { + xi.Items.Clear(); + + foreach (ExportsTreeNode node in nodes) + { + XmlItem newItem = new XmlItem(); + newItem.Name = node.Name; + if (node.ExportType != null) + { + newItem.SetProp("ExportType", node.ExportType.FullName); + } + if (node.ImageIndex != -1) + { + newItem.SetProp("Icon", node.ImageIndex.ToString()); + } + newItem.SetProp("Enabled", node.Enabled.ToString()); + xi.Items.Add(newItem); + if (node.Nodes.Count != 0) + { + SaveMenuTree(newItem, node.Nodes); + } + } + } + + public void SaveExportOptions() + { + XmlItem options = Config.Root.FindItem("ExportOptions"); + + if (options == null) + { + options = new XmlItem(); + options.Name = "ExportOptions"; + Config.Root.AddItem(options); + } + SaveMenuTree(options, menuNodes); + } + + private void RestoreMenuTree(XmlItem xi, List nodes) + { + foreach (XmlItem item in xi.Items) + { + Type exportType = null; + string typeProp = item.GetProp("ExportType"); + if (!string.IsNullOrEmpty(typeProp)) + { + exportType = Type.GetType(typeProp); + } + string imageIndexProp = item.GetProp("Icon"); + int imageIndex = -1; + if (!string.IsNullOrEmpty(imageIndexProp)) + { + int.TryParse(imageIndexProp, out imageIndex); + } + string enabledProp = item.GetProp("Enabled"); + bool enabled = true; + if (!string.IsNullOrEmpty(imageIndexProp)) + { + int.TryParse(imageIndexProp, out imageIndex); + } + ExportsTreeNode currentNode = new ExportsTreeNode(item.Name, exportType, imageIndex, enabled); + nodes.Add(currentNode); + if (item.Items.Count > 0) + { + RestoreMenuTree(item, currentNode.Nodes); + } + } + } + + public List MakeDefaultExportsMenu() + { + return defaultMenuDelegate(); + } + + private void RestoreDefault() + { + menuNodes = MakeDefaultExportsMenu(); + } + + public void RestoreExportOptions() + { + XmlItem options = Config.Root.FindItem("ExportOptions"); + + if (options != null && options.Items.Count != 0) + { + RestoreMenuTree(options, menuNodes); + } + else + { + RestoreDefault(); + } + } + + private void RegisterObject(ExportsTreeNode node, bool registerCategories) + { + if (node.ExportType == null && registerCategories) + { + RegisteredObjects.AddExportCategory(node.Name, node.ToString(), node.ImageIndex); + } + else if (node.ExportType != null && !registerCategories) + { + RegisteredObjects.AddExport(node.ExportType, node.ToString(), node.ImageIndex); + } + List list = new List(); + RegisteredObjects.Objects.EnumItems(list); + node.Tag = list[list.Count - 1]; + } + + // if registeredCategories has been set to true - method would register categories only + // else - exports only + private void RegisterObjects(List nodes, bool registerCategories) + { + foreach (ExportsTreeNode node in nodes) + { + RegisterObject(node, registerCategories); + if (node.ExportType == null) + { + RegisterObjects(node.Nodes, registerCategories); + } + } + } + + public void RegisterCategories() + { + RegisterObjects(ExportsMenu, true); + } + + public void RegisterExports() + { + RegisterObjects(ExportsMenu, false); + } + + private ExportsTreeNode FindItem(string name, Type exportType, List menu) + { + ExportsTreeNode res = null; + + foreach (ExportsTreeNode node in menu) + { + if (!string.IsNullOrEmpty(name) && node.Name == name) + { + res = node; + } + if (exportType != null && node.ExportType == exportType) + { + res = node; + } + if (node.ExportType == null) + { + res = FindItem(name, exportType, node.Nodes); + } + } + + return res; + } + + public void SetExportCategoryEnabled(string name, bool enabled) + { + FindItem(name, null, menuNodes).Enabled = enabled; + } + + public void SetExportEnabled(Type exportType, bool enabled) + { + FindItem(null, exportType, menuNodes).Enabled = enabled; + } + } +} diff --git a/FastReport.Base/Utils/RegisteredObjects.cs b/FastReport.Base/Utils/RegisteredObjects.cs index eb2ca4d3..4d4284c9 100644 --- a/FastReport.Base/Utils/RegisteredObjects.cs +++ b/FastReport.Base/Utils/RegisteredObjects.cs @@ -653,9 +653,7 @@ internal static Type FindType(string typeName) { if (typeName != null && typeName != "") { - Type type = FTypes[typeName] as Type; - if (type != null) - return type; + return FTypes[typeName] as Type; } return null; } diff --git a/FastReport.Core.Web/Application/WebUtils.cs b/FastReport.Core.Web/Application/WebUtils.cs index b3986fb4..bc2a0be4 100644 --- a/FastReport.Core.Web/Application/WebUtils.cs +++ b/FastReport.Core.Web/Application/WebUtils.cs @@ -6,6 +6,7 @@ using System.Net; using System.Text; using System.Text.RegularExpressions; +using FastReport.Export; namespace FastReport.Web { diff --git a/FastReport.Core.Web/Directory.Build.targets b/FastReport.Core.Web/Directory.Build.targets new file mode 100644 index 00000000..18cedec9 --- /dev/null +++ b/FastReport.Core.Web/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/FastReport.Core.Web/FastReport.OpenSource.Web.csproj b/FastReport.Core.Web/FastReport.OpenSource.Web.csproj new file mode 100644 index 00000000..e5ffd122 --- /dev/null +++ b/FastReport.Core.Web/FastReport.OpenSource.Web.csproj @@ -0,0 +1,73 @@ + + + netstandard2.0 + true + 1.0.0 + https://www.fast-report.com/en/product/fast-report-net/license + Fast Reports Inc. + Fast Reports Inc. + FastReport.Net is a full-featured reporting solution for .Net Core 2.0. +Various report objects will allow your report to look exactly how you want it to: 13 types of bands, 25 types of barcodes, table object, diagram, maps, shapes, line, PolyLine, Polygon and many more. +FastReport.Net supports export to various popular formats, such as PDF/A, Excel, Word, Open Office, HTML, CSV, Json, XAML, ZPL, etc. + + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net + https://www.fast-report.com/download/images/frlogo-big.png + reporting, reports, pdf, html, mvc, core + true + Debug;Release;Demo + + + The full version of the package is available in FastReport.Net Professional at https://www.fast-report.com/en/fast-report-net-editions-compare/ + + + https://github.com/FastReports/FastReport/blob/master/LICENSE.md + OPENSOURCE; + FastReport.OpenSource.Web + ../FastReport.OpenSource.snk + FastReport Open Source is an open source reporting solution for .Net Core 2.x and .Net Framework 4.x. +Various report objects will allow your report to look exactly how you want it to: 13 types of bands, 25 types of barcodes, table object, shapes, line, PolyLine, Polygon and many more. + https://github.com/FastReports/FastReport + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FastReport.Core.Web/FastReport.Web.csproj b/FastReport.Core.Web/FastReport.Web.csproj index faf36b93..c55c40c4 100644 --- a/FastReport.Core.Web/FastReport.Web.csproj +++ b/FastReport.Core.Web/FastReport.Web.csproj @@ -1,109 +1,73 @@ - - - - netstandard2.0 - true - 1.0.0 - https://www.fast-report.com/en/product/fast-report-net/license - Fast Reports Inc. - Fast Reports Inc. - FastReport.Net is a full-featured reporting solution for .Net Core 2.0. + + + netstandard2.0 + true + 1.0.0 + https://www.fast-report.com/en/product/fast-report-net/license + Fast Reports Inc. + Fast Reports Inc. + FastReport.Net is a full-featured reporting solution for .Net Core. Various report objects will allow your report to look exactly how you want it to: 13 types of bands, 25 types of barcodes, table object, diagram, maps, shapes, line, PolyLine, Polygon and many more. FastReport.Net supports export to various popular formats, such as PDF/A, Excel, Word, Open Office, HTML, CSV, Json, XAML, ZPL, etc. - Fast Reports Inc. - - - https://www.fast-report.com/en/product/fast-report-net - https://www.fast-report.com/download/images/frlogo-big.png - reporting, reports, pdf, html, mvc, core - true - Debug;Release;Demo - - - - The full version of the package is available in FastReport.Net Professional at https://www.fast-report.com/en/fast-report-net-editions-compare/ - - - - - - https://github.com/FastReports/FastReport/blob/master/LICENSE.md - OPENSOURCE; - FastReport.OpenSource.Web - ../FastReport.OpenSource.snk - FastReport Open Source is an open source reporting solution for .Net Core 2.x and .Net Framework 4.x. -Various report objects will allow your report to look exactly how you want it to: 13 types of bands, 25 types of barcodes, table object, shapes, line, PolyLine, Polygon and many more. - https://github.com/FastReports/FastReport - - - - - - - - FastReport.Web - ../FastReport.Net.snk - FastReport.Net is a full-featured reporting solution for .Net Core 2.x. + Fast Reports Inc. + https://www.fast-report.com/en/product/fast-report-net + https://www.fast-report.com/download/images/frlogo-big.png + reporting, reports, pdf, html, mvc, core + true + Debug;Release;Demo + + + The full version of the package is available in FastReport.Net Professional at https://www.fast-report.com/en/fast-report-net-editions-compare/ + + + FastReport.Web + ../FastReport.Net.snk + FastReport.Net is a full-featured reporting solution for .Net Core. Various report objects will allow your report to look exactly how you want it to: 13 types of bands, 25 types of barcodes, table object, diagram, maps, shapes, line, PolyLine, Polygon and many more. FastReport.Net supports export to various popular formats, such as PDF/A, Excel, Word, Open Office, HTML, CSV, Json, XAML, ZPL, etc. $(DemoDescription) - - - - - - - - FastReport.Web - ../FastReport.Net.snk - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FastReport.OpenSource.sln b/FastReport.OpenSource.sln index da19c61f..844e5393 100644 --- a/FastReport.OpenSource.sln +++ b/FastReport.OpenSource.sln @@ -1,12 +1,10 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28010.2019 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29201.188 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FastReport.OpenSource", "FastReport.OpenSource\FastReport.OpenSource.csproj", "{62667265-5E09-444D-8218-244DE84804A7}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FastReport.Web", "FastReport.Core.Web\FastReport.Web.csproj", "{892B2175-3E27-44FA-886E-971DF320200F}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FastReport.Tests.OpenSource", "Tools\FastReport.Tests.OpenSource\FastReport.Tests.OpenSource.csproj", "{0F76AD9F-90DA-40D8-83B1-3EAD54F0DD5B}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Demos", "Demos", "{8E9E75EB-2ABC-4CC1-8AA0-C11DEE54A152}" @@ -37,6 +35,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FastReport.OpenSource.MVC", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FastReport.OpenSource.Web.MVC", "Demos\OpenSource\FastReport.OpenSource.Web.MVC\FastReport.OpenSource.Web.MVC.csproj", "{FD840207-C565-4E98-8118-D7EF7F183D7C}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FastReport.OpenSource.Web", "FastReport.Core.Web\FastReport.OpenSource.Web.csproj", "{907C14E8-6C9E-4070-8C65-3BF5CCA2E534}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FastReport.OpenSource.Export.PdfSimple", "Extras\OpenSource\FastReport.OpenSource.Export.PdfSimple\FastReport.OpenSource.Export.PdfSimple\FastReport.OpenSource.Export.PdfSimple.csproj", "{09E87462-E2B8-4B8F-AE41-55A8584471F9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FastReport.OpenSource.Export.PdfSimple.Tests", "Extras\OpenSource\FastReport.OpenSource.Export.PdfSimple\FastReport.OpenSource.Export.PdfSimple.Tests\FastReport.OpenSource.Export.PdfSimple.Tests.csproj", "{01DA6786-77D4-4457-BF33-E204F0C9E155}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Academic|Any CPU = Academic|Any CPU @@ -56,16 +60,6 @@ Global {62667265-5E09-444D-8218-244DE84804A7}.Release|Any CPU.Build.0 = Release|Any CPU {62667265-5E09-444D-8218-244DE84804A7}.WinForms|Any CPU.ActiveCfg = Release|Any CPU {62667265-5E09-444D-8218-244DE84804A7}.WinForms|Any CPU.Build.0 = Release|Any CPU - {892B2175-3E27-44FA-886E-971DF320200F}.Academic|Any CPU.ActiveCfg = Demo|Any CPU - {892B2175-3E27-44FA-886E-971DF320200F}.Academic|Any CPU.Build.0 = Demo|Any CPU - {892B2175-3E27-44FA-886E-971DF320200F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {892B2175-3E27-44FA-886E-971DF320200F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {892B2175-3E27-44FA-886E-971DF320200F}.Demo|Any CPU.ActiveCfg = Demo|Any CPU - {892B2175-3E27-44FA-886E-971DF320200F}.Demo|Any CPU.Build.0 = Demo|Any CPU - {892B2175-3E27-44FA-886E-971DF320200F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {892B2175-3E27-44FA-886E-971DF320200F}.Release|Any CPU.Build.0 = Release|Any CPU - {892B2175-3E27-44FA-886E-971DF320200F}.WinForms|Any CPU.ActiveCfg = Demo|Any CPU - {892B2175-3E27-44FA-886E-971DF320200F}.WinForms|Any CPU.Build.0 = Demo|Any CPU {0F76AD9F-90DA-40D8-83B1-3EAD54F0DD5B}.Academic|Any CPU.ActiveCfg = Debug|Any CPU {0F76AD9F-90DA-40D8-83B1-3EAD54F0DD5B}.Academic|Any CPU.Build.0 = Debug|Any CPU {0F76AD9F-90DA-40D8-83B1-3EAD54F0DD5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU @@ -186,6 +180,36 @@ Global {FD840207-C565-4E98-8118-D7EF7F183D7C}.Release|Any CPU.Build.0 = Release|Any CPU {FD840207-C565-4E98-8118-D7EF7F183D7C}.WinForms|Any CPU.ActiveCfg = Debug|Any CPU {FD840207-C565-4E98-8118-D7EF7F183D7C}.WinForms|Any CPU.Build.0 = Debug|Any CPU + {907C14E8-6C9E-4070-8C65-3BF5CCA2E534}.Academic|Any CPU.ActiveCfg = Demo|Any CPU + {907C14E8-6C9E-4070-8C65-3BF5CCA2E534}.Academic|Any CPU.Build.0 = Demo|Any CPU + {907C14E8-6C9E-4070-8C65-3BF5CCA2E534}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {907C14E8-6C9E-4070-8C65-3BF5CCA2E534}.Debug|Any CPU.Build.0 = Debug|Any CPU + {907C14E8-6C9E-4070-8C65-3BF5CCA2E534}.Demo|Any CPU.ActiveCfg = Demo|Any CPU + {907C14E8-6C9E-4070-8C65-3BF5CCA2E534}.Demo|Any CPU.Build.0 = Demo|Any CPU + {907C14E8-6C9E-4070-8C65-3BF5CCA2E534}.Release|Any CPU.ActiveCfg = Release|Any CPU + {907C14E8-6C9E-4070-8C65-3BF5CCA2E534}.Release|Any CPU.Build.0 = Release|Any CPU + {907C14E8-6C9E-4070-8C65-3BF5CCA2E534}.WinForms|Any CPU.ActiveCfg = Demo|Any CPU + {907C14E8-6C9E-4070-8C65-3BF5CCA2E534}.WinForms|Any CPU.Build.0 = Demo|Any CPU + {09E87462-E2B8-4B8F-AE41-55A8584471F9}.Academic|Any CPU.ActiveCfg = Release|Any CPU + {09E87462-E2B8-4B8F-AE41-55A8584471F9}.Academic|Any CPU.Build.0 = Release|Any CPU + {09E87462-E2B8-4B8F-AE41-55A8584471F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {09E87462-E2B8-4B8F-AE41-55A8584471F9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {09E87462-E2B8-4B8F-AE41-55A8584471F9}.Demo|Any CPU.ActiveCfg = Debug|Any CPU + {09E87462-E2B8-4B8F-AE41-55A8584471F9}.Demo|Any CPU.Build.0 = Debug|Any CPU + {09E87462-E2B8-4B8F-AE41-55A8584471F9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {09E87462-E2B8-4B8F-AE41-55A8584471F9}.Release|Any CPU.Build.0 = Release|Any CPU + {09E87462-E2B8-4B8F-AE41-55A8584471F9}.WinForms|Any CPU.ActiveCfg = Release|Any CPU + {09E87462-E2B8-4B8F-AE41-55A8584471F9}.WinForms|Any CPU.Build.0 = Release|Any CPU + {01DA6786-77D4-4457-BF33-E204F0C9E155}.Academic|Any CPU.ActiveCfg = Debug|Any CPU + {01DA6786-77D4-4457-BF33-E204F0C9E155}.Academic|Any CPU.Build.0 = Debug|Any CPU + {01DA6786-77D4-4457-BF33-E204F0C9E155}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {01DA6786-77D4-4457-BF33-E204F0C9E155}.Debug|Any CPU.Build.0 = Debug|Any CPU + {01DA6786-77D4-4457-BF33-E204F0C9E155}.Demo|Any CPU.ActiveCfg = Debug|Any CPU + {01DA6786-77D4-4457-BF33-E204F0C9E155}.Demo|Any CPU.Build.0 = Debug|Any CPU + {01DA6786-77D4-4457-BF33-E204F0C9E155}.Release|Any CPU.ActiveCfg = Release|Any CPU + {01DA6786-77D4-4457-BF33-E204F0C9E155}.Release|Any CPU.Build.0 = Release|Any CPU + {01DA6786-77D4-4457-BF33-E204F0C9E155}.WinForms|Any CPU.ActiveCfg = Debug|Any CPU + {01DA6786-77D4-4457-BF33-E204F0C9E155}.WinForms|Any CPU.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -203,6 +227,8 @@ Global {793B1AE1-3C7D-47D6-B499-6B7ECF6258DB} = {898AF8DC-11C3-4640-B60C-5D8CBF2F29CF} {26C1739E-28E1-41AC-9B6C-35765E52CD4C} = {8E9E75EB-2ABC-4CC1-8AA0-C11DEE54A152} {FD840207-C565-4E98-8118-D7EF7F183D7C} = {8E9E75EB-2ABC-4CC1-8AA0-C11DEE54A152} + {09E87462-E2B8-4B8F-AE41-55A8584471F9} = {CCF32DAC-85D9-43D4-A4A7-72626A13D806} + {01DA6786-77D4-4457-BF33-E204F0C9E155} = {CCF32DAC-85D9-43D4-A4A7-72626A13D806} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {DFBB1F5B-F03E-4BCB-AFEE-A45A2C4D5BB8} diff --git a/FastReport.OpenSource/Utils/Config.Core.cs b/FastReport.OpenSource/Utils/Config.Core.cs index c8cc496a..3dc72f17 100644 --- a/FastReport.OpenSource/Utils/Config.Core.cs +++ b/FastReport.OpenSource/Utils/Config.Core.cs @@ -52,6 +52,16 @@ private static void SaveUIStyle() { } + private static void SaveExportOptions() + { + } + + private static void RestoreExportOptions() + { + ExportsOptions options = ExportsOptions.GetInstance(); + options.RestoreExportOptions(); + } + #endregion Private Methods internal static void DoEvent() diff --git a/FastReport.OpenSource/Utils/ExportsOptions.Core.cs b/FastReport.OpenSource/Utils/ExportsOptions.Core.cs new file mode 100644 index 00000000..364028e4 --- /dev/null +++ b/FastReport.OpenSource/Utils/ExportsOptions.Core.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using FastReport.Export.Image; + +namespace FastReport.Utils +{ + partial class ExportsOptions + { + private List DefaultExports() + { + List defaultMenu = new List(); + + defaultMenu.Add(new ExportsTreeNode("Image", typeof(ImageExport), 103)); + + return defaultMenu; + } + } +} diff --git a/FastReport/Resources/en.xml b/FastReport/Resources/en.xml index f99b1714..22cc8b3a 100644 --- a/FastReport/Resources/en.xml +++ b/FastReport/Resources/en.xml @@ -36,6 +36,7 @@ + @@ -1518,6 +1519,7 @@ + @@ -1901,6 +1903,7 @@ + @@ -2157,6 +2160,10 @@ + + + + diff --git a/Tools/FastReport.Tests.OpenSource/Data/JsonConnectionTests.cs b/Tools/FastReport.Tests.OpenSource/Data/JsonConnectionTests.cs index b1e97cd5..2e61b1aa 100644 --- a/Tools/FastReport.Tests.OpenSource/Data/JsonConnectionTests.cs +++ b/Tools/FastReport.Tests.OpenSource/Data/JsonConnectionTests.cs @@ -1,4 +1,5 @@ using FastReport.Data.JsonConnection; +using FastReport.Data.JsonConnection.JsonParser; using System; using System.Collections.Generic; using System.Text; @@ -58,8 +59,8 @@ public void ReadNumberTest(string jsonText, double number) Assert.IsType(obj); Assert.Single(obj as JsonArray); - Assert.IsType((obj as JsonArray)[0]); - Assert.Equal(number, ((obj as JsonArray)[0] as JsonNumber).Value, 1); + Assert.IsType((obj as JsonArray)[0]); + Assert.Equal(number, (double)(obj as JsonArray)[0], 1); } [Theory] @@ -96,8 +97,8 @@ public void ReadBool(string jsonText, string key, bool value) Assert.IsType(obj); Assert.Single(obj as JsonObject); Assert.Contains(key, (obj as JsonObject).Keys); - Assert.IsType((obj as JsonObject)[key]); - Assert.Equal(value, ((obj as JsonObject)[key] as JsonBoolean).Value); + Assert.IsType((obj as JsonObject)[key]); + Assert.Equal(value, (bool)(obj as JsonObject)[key]); } [Theory] @@ -153,9 +154,9 @@ public void TestComplex() Assert.Equal(2, obj.Count); - Assert.IsType(obj["title"]); + Assert.IsType(obj["title"]); - Assert.Equal("example glossary", (obj["title"] as JsonString).Value); + Assert.Equal("example glossary", obj["title"] as string); Assert.IsType(obj["GlossDiv"]); obj = obj["GlossDiv"] as JsonObject;