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;