Excel 코드 추가

This commit is contained in:
김판돌 2025-05-15 20:50:51 +09:00
parent f3506c37b5
commit 6f0ecab261
154 changed files with 300947 additions and 1 deletions

8
Assets/07_Excel.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e042717589682a54f9ce41ea0e4f0259
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/07_Excel/Datas.xlsx Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2ee477d4e8830924dacd274dbee5890a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -21,7 +21,6 @@ public class PlayerAttack : MonoBehaviour
controller = GetComponent<PlayerController>(); controller = GetComponent<PlayerController>();
animator = GetComponentInChildren<Animator>(); animator = GetComponentInChildren<Animator>();
PlayManager.Instance.leftMouve += Attack; PlayManager.Instance.leftMouve += Attack;
Debug.Log(123);
} }

View File

@ -0,0 +1,200 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using ClosedXML.Excel;
public class Excel
{
private List<Sheet> datas;
public List<Sheet> getDatas { get { return datas; } }
// 좀더 고도화가 필요함.
//public Sheet findSheet(string sheetName) {
// int index = datas.FindIndex(n => n.name == sheetName);
// if(index == -1)
// {
// Debug.Log("null exception");
// return null;
// }
// return datas[index];
//}
#region Dynamic
//이러한 형태로 사용할것
public Dynamic dynamic;
public class Dynamic
{
List<Data> datas;
public float selectVelue(string name)
{
return datas.Find(n => n.name.Equals(name)).velue;
}
public Dynamic(Sheet sheet)
{
datas = new List<Data>();
foreach (var item in sheet.dicViewer)
{
Data data = new Data((string)item.Value["name"], (float)item.Value["velue"]);
datas.Add(data);
}
}
public class Data
{
public string name;
public float velue;
public Data(string name, float velue)
{
this.name = name;
this.velue = velue;
}
}
}
#endregion
public Excel()
{
ExcelManager excel = new ExcelManager();
//Dynamic, Unit
excel.Add("Datas.xlsx");
datas = excel.Play();
dynamic = new Dynamic(datas.Find(n => n.name.Equals("Dynamic")));
}
public class Sheet
{
string _name;
public string name { get { return _name; } }
List<string> _variable;
public List<string> variable { get { return _variable; } }
List<string> _dataEnum;
public List<string> dataEnum { get { return _dataEnum; } }
List<string> _type;
public List<string> type { get { return _type; } }
Dictionary<long, Dictionary<string, object>> _dicViewer;
public Dictionary<long, Dictionary<string, object>> dicViewer { get { return _dicViewer; } }
public Sheet(string name, List<string> variable, List<string> dataEnum, List<string> type, Dictionary<long, Dictionary<string, object>> dicViewer)
{
this._name = name;
this._variable = variable;
this._dataEnum = dataEnum;
this._type = type;
this._dicViewer = dicViewer;
}
public Sheet(Sheet sheet)
{
this._name = new string(sheet.name);
this._variable = new List<string>(sheet.variable);
this._dataEnum = new List<string>(sheet.dataEnum);
this._type = new List<string>(type);
this._dicViewer = new Dictionary<long, Dictionary<string, object>>(dicViewer);
}
}
class ExcelManager
{
readonly string path = Application.dataPath + "/07_Excel/";
List<Sheet> _sheets;
List<string> readList;
public ExcelManager()
{
_sheets = new List<Sheet>();
readList = new List<string>();
}
public void Add(string file)
{
readList.Add(path + file);
}
public List<Sheet> Play()
{
for (int n = 0; n < readList.Count; n++)
if (!ExcelLoad(readList[n]))
return null;
return _sheets;
}
public bool ExcelLoad(string pathFile)
{
_sheets = new List<Sheet>();
// 엑셀 파일을 엽니다.
using (var workbook = new XLWorkbook(pathFile))
{
// 모든 워크시트를 반복합니다.
foreach (var worksheet in workbook.Worksheets)
{
// 변수 이름, 데이터 타입, 데이터 열거형, 딕셔너리 초기화
var variable = new List<string>(); // 변수명
var dataEnum = new List<string>(); // server와 client를 나눌 기준
var type = new List<string>(); // 변수 타입
var dicViewer = new Dictionary<long, Dictionary<string, object>>();
// 행과 열의 수 얻기
var vertical = worksheet.RangeUsed().RowCount() - 1; // 데이터가 있는 행의 수
var horizontal = worksheet.RangeUsed().ColumnCount() - 1; // 데이터가 있는 열의 수
// 변수 이름과 타입을 삽입
for (int n = 0; n <= horizontal; n++)
{
variable.Add(worksheet.Cell(1, n + 1).GetValue<string>());
type.Add(worksheet.Cell(4, n + 1).GetValue<string>().ToLower());
dataEnum.Add(worksheet.Cell(3, n + 1).GetValue<string>().ToLower());
}
bool isIndex = variable[0] == "index";
for (int n = 5; n <= vertical + 1; n++)
{
var dataList = new Dictionary<string, object>();
for (int m = 0; m <= horizontal; m++)
{
object getData;
switch (type[m])
{
case "bool":
getData = (worksheet.Cell(n, m + 1).Value.ToString() == "true");
break;
case "int":
case "enum":
getData = (int)worksheet.Cell(n, m + 1).Value;
break;
case "long":
getData = (long)worksheet.Cell(n, m + 1).Value;
break;
case "float":
getData = (float)worksheet.Cell(n, m + 1).Value;
break;
case "time":
getData = (DateTime)worksheet.Cell(n, m + 1).Value;
break;
default:
getData = worksheet.Cell(n, m + 1).Value.ToString();
break;
}
dataList.Add(variable[m], getData);
}
dicViewer.Add((isIndex ? (long)dataList["index"] : n - 4), dataList);
}
var sheet = new Sheet(worksheet.Name, variable, dataEnum, type, dicViewer);
_sheets.Add(sheet);
}
}
return true;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: eb4aa7119d8b57f4db1e2afc5e9d38d0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -4,10 +4,17 @@ using UnityEngine.SceneManagement;
public class GameManager : DontDestroy<GameManager> public class GameManager : DontDestroy<GameManager>
{ {
eScene nowScene; eScene nowScene;
Excel excel;
protected override void OnAwake() protected override void OnAwake()
{ {
Application.targetFrameRate = 120; Application.targetFrameRate = 120;
nowScene = eScene.Title; nowScene = eScene.Title;
excel = new Excel();
//사용법
//Debug.Log(excel.dynamic.selectVelue("maxSwingCount"));
} }
public enum eScene public enum eScene

18
Assets/NuGet.config Normal file
View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" enableCredentialProvider="false" />
</packageSources>
<disabledPackageSources />
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
<config>
<add key="packageInstallLocation" value="CustomWithinAssets" />
<add key="repositoryPath" value="./Packages" />
<add key="PackagesConfigDirectoryPath" value="." />
<add key="slimRestore" value="true" />
<add key="PreferNetStandardOverNetFramework" value="true" />
</config>
</configuration>

23
Assets/NuGet.config.meta Normal file
View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 356dafd8e98638044a64b00c1dfedcfe
labels:
- NuGetForUnity
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/Packages.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 25b0fa346755490449d30977235edb0c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fef594bf8aaa2ed4facf818ed7a17fc1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>ClosedXML</id>
<version>0.105.0</version>
<authors>Jan Havlíček, Francois Botha, Aleksei Pankratev, Manuel de Leon, Amir Ghezelbash</authors>
<license type="expression">MIT</license>
<licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
<icon>nuget-logo.png</icon>
<projectUrl>https://github.com/ClosedXML/ClosedXML</projectUrl>
<description>See release notes https://github.com/ClosedXML/ClosedXML/releases/tag/0.105.0 ClosedXML is a .NET library for reading, manipulating and writing Excel 2007+ (.xlsx, .xlsm) files. It aims to provide an intuitive and user-friendly interface to dealing with the underlying OpenXML API.</description>
<releaseNotes>See https://github.com/ClosedXML/ClosedXML/releases/tag/0.105.0</releaseNotes>
<tags>Excel OpenXml xlsx</tags>
<repository type="git" url="https://github.com/ClosedXML/ClosedXML" commit="d15f6690886801980c0d83b7eb1d1b5d2171ad31" />
<dependencies>
<group targetFramework=".NETStandard2.0">
<dependency id="ClosedXML.Parser" version="2.0.0" exclude="Build,Analyzers" />
<dependency id="DocumentFormat.OpenXml" version="[3.1.1, 4.0.0)" exclude="Build,Analyzers" />
<dependency id="ExcelNumberFormat" version="1.1.0" exclude="Build,Analyzers" />
<dependency id="Microsoft.Bcl.HashCode" version="1.1.1" exclude="Build,Analyzers" />
<dependency id="RBush.Signed" version="4.0.0" exclude="Build,Analyzers" />
<dependency id="SixLabors.Fonts" version="1.0.0" exclude="Build,Analyzers" />
<dependency id="System.Buffers" version="4.5.1" exclude="Build,Analyzers" />
<dependency id="System.Memory" version="4.5.5" exclude="Build,Analyzers" />
</group>
<group targetFramework=".NETStandard2.1">
<dependency id="ClosedXML.Parser" version="2.0.0" exclude="Build,Analyzers" />
<dependency id="DocumentFormat.OpenXml" version="[3.1.1, 4.0.0)" exclude="Build,Analyzers" />
<dependency id="ExcelNumberFormat" version="1.1.0" exclude="Build,Analyzers" />
<dependency id="RBush.Signed" version="4.0.0" exclude="Build,Analyzers" />
<dependency id="SixLabors.Fonts" version="1.0.0" exclude="Build,Analyzers" />
</group>
</dependencies>
</metadata>
</package>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: cf271e402076be14b84b93a9ae8abd89
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b00e5f0234ac7fa439e337eaf57548e5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 755d2fd9f0ec1bc43a10fcd9002a3e74
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 42d57c3664c1ca04a9c903160812bfd4
labels:
- NuGetForUnity
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f086d878f0d30a743ab11ae3250131a2
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -0,0 +1,136 @@
fileFormatVersion: 2
guid: bf51a5f6ee470a8419eaf4c1f06f3809
TextureImporter:
internalIDToNameTable:
- first:
213: -2711032071728996648
second: nuget-logo_0
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: nuget-logo_0
rect:
serializedVersion: 2
x: 47
y: 48
width: 1115
height: 1114
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 8ded6e5c1ba706ad0800000000000000
internalID: -2711032071728996648
vertices: []
indices:
edges: []
weights: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f413557a3535e9245a5a79a44827ded8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>ClosedXML.Parser</id>
<version>2.0.0</version>
<authors>Jan Havlíček</authors>
<license type="expression">MIT</license>
<licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
<readme>README.md</readme>
<projectUrl>https://github.com/ClosedXML/ClosedXML.Parser</projectUrl>
<description>A lexer and parser of Excel formulas with focus on performance. Its goal is to create
an abstract syntax tree from a formula text to enable formula evaluation.</description>
<tags>ClosedXML parser formula xlsx</tags>
<repository type="git" url="https://github.com/ClosedXML/ClosedXML.Parser" commit="658973aeedc2fe289e0ccba2bb9959f67692ded5" />
<dependencies>
<group targetFramework=".NETStandard2.0">
<dependency id="System.Memory" version="4.5.4" exclude="Build,Analyzers" />
</group>
<group targetFramework=".NETStandard2.1" />
</dependencies>
</metadata>
</package>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e069c8f7dbef6244bb827161e98c4fab
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,110 @@
# ClosedParser
ClosedParser is a project to parse OOXML grammar to create an abstract syntax tree that can be later evaluated.
Official source for the grammar is [MS-XML](https://learn.microsoft.com/en-us/openspecs/office_standards/ms-xlsx/2c5dee00-eff2-4b22-92b6-0738acd4475e), chapter 2.2.2 Formulas. The provided grammar is not usable for parser generators, it's full of ambiguities and the rules don't take into account operator precedence.
# How to use
* Implement `IAstFactory` interface.
* Call parsing methods
* `FormulaParser<TScalarValue, TNode>.CellFormulaA1("Sum(A1, 2)", astFactory)`
* `FormulaParser<TScalarValue, TNode>.CellFormulaR1C1("Sum(R1C1, 2)", astFactory)`
## Visualizer
There is a visualizer to display AST in a browser at **[https://parser.closedxml.io](https://parser.closedxml.io)**
![image](https://github.com/ClosedXML/ClosedXML.Parser/assets/7634052/4beaab23-4599-44d4-be7b-705178b69f99)
# Goals
* __Performance__ - ClosedXML needs to parse formula really fast. Limit allocation and so on.
* __Evaluation oriented__ - Parser should concentrates on creation of abstract syntax trees, not concrete syntax tree. Goal is evaluation of formulas, not transformation.
* __Multi-use__ - Formulas are mostly used in cells, but there are other places with different grammar rules (e.g. sparklines, data validation)
* __Multi notation (A1 or R1C1)__ - Parser should be able to parse both A1 and R1C1 formulas. I.e. `SUM(R5)` can mean return sum of cell `R5` in _A1_ notation, but return sum of all cells on row 5 in _R1C1_ notation.
Project uses ANTLR4 grammar file as the source of truth and a lexer. There is also ANTLR parser is not used, but is used as a basis of recursive descent parser (ANTLR takes up 8 seconds vs RDS 700ms for parsing of enron dataset).
ANTLR4 one of few maintained parser generators with C# target.
The project has a low priority, XLParser mostly works, but in the long term, replacement is likely.
## Current performance
ENRON dataset parsed using recursive descent parser and DFA lexer in Release mode:
* Total: *946320*
* Elapsed: *1838 ms*
* Per formula: *1.942 μs*
2μs per formula should be something like 6000 instructions (under unrealistic assumption 1 instruction per 1 Hz), so basically fast enough.
## Limitations
The primary goal is to parse formulas stored in file, not user supplied formulas. The formulas displayed in the GUI is not the same as formula stored in the file. Several examples:
* The IFS function is a part of future functions. In the file, it is stored as `_xlfn.IFS`, but user sees `IFS`
* In the structured references, user sees @ as an indication that structured references this row, but in reality it is a specifier `[#This Row]`
Therefore:
* External references are accepted only in form of an index to an external file (e.g. `[5]`)
* There are several formula implementations out there with slighly different grammar incompatible with OOXML formulas (`[1]!'Some name in external wb'`). They are out of scope of the project.
# Why not use XLParser
ClosedXML is currently using [XLParser](https://github.com/spreadsheetlab/XLParser) and transforming the concrete syntax tree to abstract syntax tree.
* Speed:
* Grammar extensively uses regexps extensively. Regexs are slow, especially for NET4x target, allocates extra memory. XLParser takes up _47_ seconds for Enron dataset on .NET Framework. .NET teams had made massive improvements on regexs, so it takes only _16_ seconds on NET7.
* IronParser needs to determine all possible tokens after every token, that is problematic, even with the help of `prefix` hints.
* AST: XLParser creates concentrates on creation of concrete syntax tree, but for ClosedXML, we need abstract syntax tree for evaluation. IronParser is not very friendly in that regard
* ~~XLParser uses `IronParser`, an unmaintained project~~ (IronParser recently released version 1.2).
* Doesn't have support for lambdas and R1C1 style.
ANTLR lexer takes up about 3.2 seconds for Enron dataset. With ANTLR parsing, it takes up 11 seconds. I want that 7+ seconds in performance and no allocation, so RDS that takes up 700 ms.
## Debugging
Use [vscode-antlr4](https://github.com/mike-lischke/vscode-antlr4/blob/master/doc/grammar-debugging.md) plugin for debugging the grammar.
## Testing strategy
* Each token that contains some data that are extracted for a node (e.g. `A1_REFERENCE` `C5` to `row 5`, `column 3`) has a separate test class in `Lexers` directory with a `{TokenPascalName}TokenTests.cs`
* Each parser rule has a test class in `Rules` directory. It should contain all possible combinatins of a rule and comparing it with the AST nodes.
* Data set tests are in `DataSetTests.cs`. Each test tries to parse formula and ensures that **ANTLR** can parse it RDS can and can't parse a formula when **ANTLR** can't. There is no check of the output, just that formulas can be parsed. Data are contained in a `data` directory in CSV format with a one column.
## Rolex
Rolex is a DFA based lexer released under MIT license (see [Rolex: Unicode Enabled Lexer Generator in C#
](https://www.codeproject.com/Articles/5257489/Rolex-Unicode-Enabled-Lexer-Generator-in-Csharp)). ANTLR is still the source of truth, but it is used to generate Rolex grammar and then DFA for a lexer.
It is rather complicated, but two times faster than ANTLR lexer (1.9 us vs 3.676 us per formula).
## Generate lexer
Prepare rolex grammars
* Run Antlr2Rolex over FormulaLexer.g4 with A1 version to *ClosedXML.Parser\Rolex\LexerA1.rl*
* Add `/*` at the beginning of *Local A1 References* section. It comments out A1_REFERENCE and all its fragments
* Remove `/*` at the beinning of *Local R1C1 References* section. It contains a different tokens for A1_REFERENCE and its fragments
* Run Antlr2Rolex over FormulaLexer.g4 with R1C1 version to *ClosedXML.Parser\Rolex\LexerR1C1.rl*
Fix Rolex generator
* Fix bug in Rolex generator that doesn't recognize property \u1234 (just add `pc.Advance()` to FFA.cs `_ParseEscapePart` and `_ParseRangeEscapePart`]
Generate a DFA through Rolex
* `Rolex.exe ClosedXML.Parser\Rolex\LexerA1.rl /noshared /output ClosedXML.Parser\Rolex\RolexA1Dfa.cs /namespace ClosedXML.Parser.Rolex`
* `Rolex.exe ClosedXML.Parser\Rolex\LexerR1C1.rl /noshared /output ClosedXML.Parser\Rolex\RolexR1C1Dfa.cs /namespace ClosedXML.Parser.Rolex`
# TODO
* Lexer generation during build
* Proper CI pipeline.
* Azure Function
* Web
* Fuzzer
* PR to Rolex to fix unicode bug.
# Resources
* [MS-XML](https://learn.microsoft.com/en-us/openspecs/office_standards/ms-xlsx/2c5dee00-eff2-4b22-92b6-0738acd4475e)
* [Simplified XLParser grammar](https://github.com/spreadsheetlab/XLParser/blob/master/doc/ebnf.pdf) and [tokens](https://github.com/spreadsheetlab/XLParser/blob/master/doc/tokens.pdf).
* [Getting Started With ANTLR in C#](https://tomassetti.me/getting-started-with-antlr-in-csharp/)

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c3a6215bf7dfdc44996df1eabc043aee
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b803e21223f01904ab6232bb13f395ec
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 37bd988331a96c145a1278f4000f8b0e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: f6bc54dd6d18bab4ba6809be20178303
labels:
- NuGetForUnity
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ec479c8a0ea6653498cc0a2b3c3c6da6
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c368605d6f5d22a4189290c37e0a5379
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,556 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>DocumentFormat.OpenXml</id>
<version>3.1.1</version>
<authors>Microsoft</authors>
<license type="expression">MIT</license>
<licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
<icon>icon.png</icon>
<readme>README.md</readme>
<projectUrl>https://github.com/dotnet/Open-XML-SDK</projectUrl>
<iconUrl>https://raw.githubusercontent.com/dotnet/Open-XML-SDK/master/icon.png</iconUrl>
<description>The Open XML SDK provides tools for working with Office Word, Excel, and PowerPoint documents. It supports scenarios such as:
- High-performance generation of word-processing documents, spreadsheets, and presentations.
- Populating content in Word files from an XML data source.
- Splitting up (shredding) a Word or PowerPoint file into multiple files, and combining multiple Word/PowerPoint files into a single file.
- Extraction of data from Excel documents.
- Searching and replacing content in Word/PowerPoint using regular expressions.
- Updating cached data and embedded spreadsheets for charts in Word/PowerPoint.
- Document modification, such as removing tracked revisions or removing unacceptable content from documents.</description>
<releaseNotes># Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [3.1.1] - 2024-10-15
### Fixed
- Updated System.IO.Packaging and other dependencies (#1794, #1795, #1796, #1782, #1808)
- Fixed add c16:uniqueId to several chart complex types (#1762)
- Fixed &lt;remarks&gt; rather than &lt;remark&gt; in the documentation comments (#1775)
## [3.1.0] - 2024-07-30
### Added
- Added `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2024.PivotAutoRefresh` namespace
- Added `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2024.PivotDynamicArrays` namespace
- Added `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.DataSourceVersioning` namespace
- Added `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.ExternalCodeService` namespace
- Added `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.MsForms` namespace
- Added `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.Pivot2023Calculation` namespace
### Fixed
- Fixed issue where `OpenXmlUnknownElement` is returned instead of `CommentPropertiesExtension` (#1751)
- Fixed issue where `OpenXmlWriter` is unable to write `SharedStringTablePart` (#1755)
## [3.0.2] - 2024-03-14
### Fixed
- Fixed issue where temp files were shareable and not deleted on close (#1658)
## [3.0.1] - 2024-01-09
### Fixed
- Fixed issue where document type would not be correct unless content type was checked first (#1625)
- Added check to only seek on packages where it is supported (#1644)
- If a malformed URI is encountered, the exception is now the same as v2.x (`OpenXmlPackageException` with an inner `UriFormatException`) (#1644)
## [3.0.0] - 2023-11-15
### Added
- Packages can now be saved on .NET Core and .NET 5+ if constructed with a path or stream (#1307).
- Packages can now support malformed URIs (such as relationships with a URI such as `mailto:person@`)
- Introduce equality comparers for `OpenXmlElement` (#1476)
- `IFeatureCollection` can now be enumerated and has a helpful debug view to see what features are registered (#1452)
- Add mime types to part creation (#1488)
- `DocumentFormat.OpenXml.Office.PowerPoint.Y2023.M02.Main` namespace
- `DocumentFormat.OpenXml.Office.PowerPoint.Y2022.M03.Main` namespace
- `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021` namespace
### Changed
- When validation finds incorrect part, it will now include the relationship type rather than a class name
- `IDisposableFeature` is now a part of the framework package and is available by default on a package or part.
### Breaking Changes
- .NET Standard 1.3 is no longer a supported platform. .NET Standard 2.0 is the lowest .NET Standard supported.
- Core infrastructure is now contained in a new package DocumentFormat.OpenXml.Framework. Typed classes are still in DocumentFormat.OpenXml. This means that you may reference DocumentFormat.OpenXml and still compile the same types, but if you want a smaller package, you may rely on just the framework package.
- Changed type of `OpenXmlPackage.Package` to `DocumentFormat.OpenXml.Packaging.IPackage` instead of `System.IO.Packaging.Package` with a similar API surface
- `EnumValue&lt;T&gt;` now is used to box a struct rather than a `System.Enum`. This allows us to enable behavior on it without resorting to reflection
- Methods on parts to add child parts (i.e. `AddImagePart`) are now implemented as extension methods off of a new marker interface `ISupportedRelationship&lt;T&gt;`
- Part type info enums (i.e. `ImagePartType`) is no longer an enum, but a static class to expose well-known part types as structs. Now any method to define a new content-type/extension pair can be called with the new `PartTypeInfo` struct that will contain the necessary information.
- `OpenXmlPackage.CanSave` is now an instance property (#1307)
- Removed `OpenXmlSettings.RelationshipErrorHandlerFactory` and associated types and replaced with a built-in mechanism to enable this
- `IdPartPair` is now a readonly struct rather than a class
- Renamed `PartExtensionProvider` to `IPartExtensionFeature` and reduced its surface area to only two methods (instead of a full `Dictionary&lt;,&gt;`). The property to access this off of `OpenXmlPackage` has been removed, but may be accessed via `Features.Get&lt;IPartExtensionFeature&gt;()` if needed.
- `OpenXmlPart`/`OpenXmlContainer`/`OpenXmlPackage` and derived types now have internal constructors (these had internal abstract methods so most likely weren't subclassed externally)
- `OpenXmlElementList` is now a struct that implements `IEnumerable&lt;OpenXmlElement&gt;` and `IReadOnlyList&lt;OpenXmlElement&gt;` where available (#1429)
- Individual implementations of `OpenXmlPartReader` are available now for each package type (i.e. `WordprocessingDocumentPartReader`, `SpreadsheetDocumentPartReader`, `PresentationDocumentPartReader`), and the previous `TypedOpenXmlPartReader` has been removed. (#1403)
- Reduced unnecessary target frameworks for packages besides DocumentFormat.OpenXml.Framework (#1471)
- Changed some spelling issues for property names (#1463, #1444)
- `Model3D` now represents the modified xml element tag name `am3d.model3d` (Previously `am3d.model3D`)
- Removed `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.PivotCacheHasRichValuePivotCacheRichInfo`
- Removed `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.RichDataPivotCacheGuid`
- Removed unused `SchemaAttrAttribute` (#1316)
- Removed unused `ChildElementInfoAttribute` (#1316)
- Removed `OpenXmlSimpleType.TextValue`. This property was never meant to be used externally (#1316)
- Removed obsolete validation logic from v1 of the SDK (#1316)
- Removed obsoleted methods from 2.x (#1316)
- Removed mutable properties on OpenXmlAttribute and marked as `readonly` (#1282)
- Removed `OpenXmlPackage.Close` in favor of `Dispose` (#1373)
- Removed `OpenXmlPackage.SaveAs` in favor of `Clone` (#1376)
## [2.20.0]
### Added
- Added DocumentFormat.OpenXml.Office.Drawing.Y2022.ImageFormula namespace
- Added DocumentFormat.OpenXml.Office.Word.Y2023.WordML.Word16DU namespace
### Changed
- Marked `OpenXmlSimpleType.TextValue` as obsolete. This property was never meant to be used externally (#1284)
- Marked `OpenXmlPackage.Package` as obsolete. This will be an implementation detail in future versions and won't be accessible (#1306)
- Marked `OpenXmlPackage.Close` as obsolete. This will be removed in a later release, use Dispose instead (#1371)
- Marked `OpenXmlPackage.SaveAs` as obsolete as it will be removed in a future version (#1378)
### Fixed
- Fixed incorrect file extensions for vbaProject files (#1292)
- Fixed incorrect file extensions for ImagePart (#1305)
- Fixed incorrect casing for customXml (#1351)
- Fixed AddEmbeddedPackagePart to allow correct extensions for various content types (#1388)
## [2.19.0] - 2022-12-14
### Added
- .NET 6 target with support for trimming (#1243, #1240)
- Added DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData namespace
- Added DocumentFormat.OpenXml.Office.PowerPoint.Y2019.Main.Command namespace
- Added DocumentFormat.OpenXml.Office.PowerPoint.Y2022.Main.Command namespace
- Added Child RichDataPivotCacheGuid to DocumentFormat.OpenXml.Office2010.Excel.PivotCacheDefinition
### Fixed
- Removed reflection usage where possible (#1240)
- Fixed issue where some URIs might be changed when cloning or creating copy (#1234)
- Fixed issue in FlatOpc generation that would not read the full stream on .NET 6+ (#1232)
- Fixed issue where restored relationships wouldn't load correctly (#1207)
## [2.18.0] 2022-09-06
### Added
- Added DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021 namespace (#1196)
- Added durableId attribute to DocumentFormat.OpenXml.Wordprocessing.NumberingPictureBullet (#1196)
- Added few base classes for typed elements, parts, and packages (#1185)
### Changed
- Adjusted LICENSE.md to conform to .NET Foundation requirements (#1194)
- Miscellaneous changes for better perf for internal services
## [2.17.1] - 2022-06-28
### Removed
- Removed the preview namespace DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions because this namespace will currently create invalid documents.
### Fixed
- Restored the PowerPointCommentPart relationship to PresentationPart.
### Deprecated
- The relationship between the PowerPointCommentPart and the PresentationPart is deprecated and will be removed in a future version.
## [2.17.0] - Unreleased
### Added
- Added DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions namespace (#1151)
- Added DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotVersionInfo namespace (#1151)
### Fixed
- Moved PowerPointCommentPart relationship to SlidePart (#1137)
### Updated
- Removed public API analyzers in favor of EnablePackageValidation (#1154)
## [2.16.0] - 2022-03-14
### Added
- Added method `OpenXmlPart.UnloadRootElement` that will unload the root element if it is loaded (#1126)
### Updated
- Schema code generation was moved to the SDK project using C# code generators
Thanks to the following for their contribution:
@f1nzer
## [2.15.0] - 2021-12-16
### Added
- Added samples for strongly typed classes and Linq-to-XML in the `./samples` directory (#1101, #1087)
- Shipping additional libraries for some additional functionality in `DocumentFormat.OpenXml.Features` and `DocumentFormat.OpenXml.Linq`. See documentation in repo for additional details.
- Added extension method to support getting image part type (#1082)
- Added generated classes and `FileFormatVersions.Microsoft365` for new subscription model types and constraints (#1097).
### Fixed
- Fixed issue for changed mime type `model/gltf.binary` (#1069)
- DocumentFormat.OpenXml.Office.Drawing.ShapeTree is now available only in Office 2010 and above, not 2007.
- Correctly serialize `new CellValue(bool)` values (#1070)
- Updated known namespaces to be generated via an in-repo source generator (#1092)
- Some documentation issues around `FileFormatVersions` enum
Thanks to the following for their contributions:
@ThomasBarnekow
@stevenhansen
@JaimeStill
@jnyrup
## [2.14.0] - 2021-10-28
### Added
- Added generated classes for Office 2021 types and constraints (#1030)
- Added `Features` property to `OpenXmlPartContainer` and `OpenXmlElement` to enable a per-part or per-document state storage
- Added public constructors for `XmlPath` (#1013)
- Added parts for Rich Data types (#1002)
- Added methods to generate unique paragraph ids (#1000)
Thanks to the following for their contributions:
@rmboggs
@ThomasBarnekow
## [2.13.1] - 2021-08-17
### Fixed
- Fixed some nullability annotations that were incorrectly defined (#953, #955)
- Fixed issue that would dispose a `TextReader` when creating an `XmlReader` under certain circumstances (#940)
- Fixed a documentation type (#937)
- Fixed an issue with adding additional children to data parts (#934)
- Replaced some documentation entries that were generic values with helpful comments (#992)
- Fixed a regression in AddDataPartRelationship (#954)
Thanks to the following for their contributions:
@ThomasBarnekow
@sorensenmatias
@lklein53
@lindexi
## [2.13.0] - 2021-05-13
### Added
- Additional O19 types to match Open Specifications (#916)
- Added generated classes for Office 2019 types and constraints (#882)
- Added nullability attributes (#840, #849)
- Added overload for `OpenXmlPartReader` and `OpenXmlReader.Create(...)` to ignore whitespace (#857)
- Added `HexBinaryValue.TryGetBytes(...)` and `HexBinaryValue.Create(byte[])` to manage the encoding and decoding of bytes (#867)
- Implemented `IEquatable&lt;IdPartPair&gt;` on `IdPartPair` to fix equality implementation there and obsoleted setters (#871)
### Fixed
- Fixed serialization of `CellValue` constructors to use invariant cultures (#903)
- Fixed parsing to allow exponents for numeric cell values (#901)
- Fixed massive performance bottleneck when `UniqueAttributeValueConstraint` is involved (#924)
### Deprecated
- Deprecated Office2013.Word.Person.Contact property. It no longer persists and will be removed in a future version (#912)
Thanks to the following for their contributions:
@lklein53
@igitur
## [2.12.3] - 2021-02-24
### Fixed
- Fixed issue where `CellValue` may validate incorrectly for boolean values (#890)
## [2.12.2] - 2021-02-16
### Fixed
- Fixed issue where `OpenSettings.RelationshipErrorHandlerFactory` creates invalid XML if the resulting URI is smaller than the input (#883)
## [2.12.1] - 2021-01-11
### Fixed
- Fixed bug where properties on `OpenXmlCompositeElement` instances could not be set to null to remove element (#850)
- Fixed `OpenXmlElement.RawOuterXml` to properly set null values without throwing (#818)
- Allow rewriting of all malformed URIs regardless of target value (#835)
## [2.12.0] - 2020-12-09
### Added
- Added `OpenSettings.RelationshipErrorHandlerFactory` to provide a way to handle URIs that break parsing documents with malformed links (#793)
- Added `OpenXmlCompositeElement.AddChild(OpenXmlElement)` to add children in the correct order per schema (#774)
- Added `SmartTagClean` and `SmartTagId` in place of `SmtClean` and `SmtId` (#747)
- Added `OpenXmlValidator.Validate(..., CancellationToken)` overrides to allow easier cancellation of long running validation on .NET 4.0+ (#773)
- Added overloads for `CellValue` to take `decimal`, `double`, and `int`, as well as convenience methods to parse them (#782)
- Added validation for `CellType` for numbers and date formats (#782)
- Added `OpenXmlReader.GetLineInfo()` to retrieve `IXmlLineInfo` of the underlying reader if available (#804)
### Fixed
- Fixed exception that would be thrown if attempting to save a document as FlatOPC if it contains SVG files (#822)
- Added `SchemaAttrAttribute` attributes back for backwards compatibility (#825)
### Removed
- Removed explicit reference to `System.IO.Packaging` on .NET 4.6 builds (#774)
## [2.11.3] - 2020-07-17
### Fixed
- Fixed massive performance bottleneck when `IndexReferenceConstraint` and `ReferenceExistConstraint` are involved (#763)
- Fixed `CellValue` to only include three most signficant digits on second fractions to correct issue loading dates (#741)
- Fixed a couple of validation indexing errors that might cause erroneous validation errors (#767)
- Updated internal validation system to not use recursion, allowing for better short-circuiting (#766)
## [2.11.2] - 2020-07-10
### Fixed
- Fixed broken source link (#749)
- Ensured compilation is deterministic (#749)
- Removed extra file in NuGet package (#749)
## [2.11.1] - 2020-07-10
### Fixed
- Ensure .NET Framework builds pass PEVerify (#744)
- `OpenXmlPartContainer.DeletePart` no longer throws an exception if there isn't a match for the identifier given (#740)
- Mark obsolete members to not show up with Intellisense (#745)
- Fixed issue with `AttributeRequiredConditionToValue` semantic constraint where validation could fail on correct input (#746)
## [2.11.0] - 2020-05-21
### Added
- Added `FileFormatVersions.2019` enum (#695)
- Added `ChartSpace` and chart elements for the new 2016 namespaces. This allows the connecting pieces for building a chart part with chart styles like "Sunburst" (#687).
- Added `OpenXmlElementFunctionalExtensions.With(...)` extension methods, which offer flexible means for constructing `OpenXmlElement` instances in the context of pure functional transformations (#679)
- Added minimum Office versions for enum types and values (#707)
- Added additional `CompatSettingNameValues` values: `UseWord2013TrackBottomHyphenation`, `AllowHyphenationAtTrackBottom`, and `AllowTextAfterFloatingTableBreak` (#706)
- Added gfxdata attribue to Arc, Curve, Line, PolyLine, Group, Image, Oval, Rect, and RoundRect shape complex types per MS-OI29500 2.1.1783-1799 (#709)
- Added `OpenXmlPartContainer.TryGetPartById` to enable child part retrieval without exception if it does not exist (#714)
- Added `OpenXmlPackage.StrictRelationshipFound` property that indicates whether this package contains Transitional relationships converted from Strict (#716)
### Fixed
- Custom derived parts did not inherit known parts from its parent, causing failure when adding parts (#722)
### Changed
- Marked the property setters in `OpenXmlAttribute` as obsolete as structs should not have mutable state (#698)
## [2.10.1] - 2020-02-28
### Fixed
- Ensured attributes are available when `OpenXmlElement` is initialized with outer XML (#684, #692)
- Some documentation errors (#681)
- Removed state that made it non-thread safe to validate elements under certain conditions (#686)
- Correctly inserts strongly-typed elements before known elements that are not strongly-typed (#690)
## [2.10.0] - 2020-01-10
### Added
- Added initial Office 2016 support, including `FileFormatVersion.Office2016`, `ExtendedChartPart` and other new schema elements (#586)
- Added .NET Standard 2.0 target (#587)
- Included symbols support for debugging (#650)
- Exposed `IXmlNamespaceResolver` from `XmlPath` instead of formatted list of strings to expose namespace/prefix mapping (#536)
- Implemented `IComparable&lt;T&gt;` and `IEquatable&lt;T&gt;` on `OpenXmlComparableSimpleValue` to allow comparisons without boxing (#550)
- Added `OpenXmlPackage.RootPart` to easily access the root part on any package (#661)
### Changed
- Updated to v4.7.0 of System.IO.Packaging which brings in a number of perf fixes (#660)
- Consolidated data for element children/properties to reduce duplication (#540, #547, #548)
- Replaced opaque binary data for element children constraints with declarative model (#603)
- A number of performance fixes to minimize allocations where possible
- 20% size reduction from 5.5mb to 4.3mb
- The validation subsystem went through a drastic redesign. This may cause changes in what errors are reported.
### Fixed
- Fixed some documentation inconsistencies (#582)
- Fixed `ToFlatOpcDocument`, `ToFlatOpcString`, `FromFlatOpcDocument`, and `FromFlatOpcString` to correctly process Alternative Format Import Parts, or "altChunk parts" (#659)
## [2.9.1] - 2019-03-13
### Changed
- Added a workaround for a .NET Native compiler issue that doesn't support calling `Marshal.SizeOf&lt;T&gt;` with a struct that contains auto-implemented properties (#569)
- Fixed a documentation error (#528)
## [2.9.0] - 2018-06-08
### Added
- `ListValue` now implements `IEnumerable&lt;T&gt;` (#385)
- Added a `WebExtension.Frozen` and obsoleted misspelled `Fronzen` property (#460)
- Added an `OpenXmlPackage.CanSave` property that indicates whether a platform supports saving without closing the package (#468)
- Simple types (except `EnumValue` and `ListValue`) now implement `IComparable&lt;T&gt;` and `IEquatable&lt;T&gt;` (#487)
### Changed
- Removed state that was carried in validators that would hold onto packages when not in use (#390)
- `EnumSimpleType` parsing was improved and uses less allocations and caches for future use (#408)
- Fixed a number of spelling mistakes in documentation (#462)
- When calling `OpenXmlPackage.Save` on .NET Framework, the package is now flushed to the stream (#468)
- Fixed race condition while performing strict translation of attributes (#480)
- Schema data for validation uses a more compact format leading to a reduction in dll size and performance improvements for loading (#482, #483)
- A number of APIs are marked as obsolete as they have simple workarounds and will be removed in the next major change
- Fixed some constraint values for validation that contained Office 2007, even when it was only supported in later versions
- Updated `System.IO.Packaging` to 4.5.0 which fixes some issues on Xamarin platforms as well as minimizes dependencies on .NET Framework
## [2.8.1] - 2018-01-03
### Changed
- Corrected package license file reference to show updated MIT License
## [2.8.0] - 2017-12-28
### Added
- Default runtime directive for better .NET Native support.
### Changed
- Fixed part saving to be encoded with UTF8 but no byte order mark. This caused some renderers to not be able to open the generated document.
- Fixed exceptions thrown when errors are encountered while opening packages to be consistent across platforms.
- Fixed issue on Mono platforms using System.IO.Packaging NuGet package (Xamarin, etc) when creating a document.
- Fixed manual saving of a package when autosave is false.
- Fixed schema constraint data and standardized serialization across platforms.
- Upgraded to `System.IO.Packaging` version 4.4.0 which fixes some consistency with .NET Framework in opening packages.
## [2.7.2] - 2017-06-06
### Added
- Package now supports .NET 3.5 and .NET 4.0 in addition to .NET Standard 1.3 and .NET Framework 4.6
### Changed
- Fixed issue where assembly version wasn't set in assembly.
## [2.7.1] - 2017-01-31
### Changed
- Fixed crash when validation is invoked on .NET Framework with strong-naming enforced.
## [2.7.0] - 2017-01-24
### Added
- SDK now supports .NET Standard 1.3
### Changed
- Moved to using System.IO.Packaging from dotnet/corefx for .NET Standard 1.3 and WindowsBase for .NET 4.5.
- Cleaned up project build system to use .NET CLI.
## [2.6.1] - 2016-01-15
### Added
- Added hundreds of XUnit tests. There are now a total of 1333 tests. They take about 20 minutes to run, so be patient.
## [2.6.0] - 2015-06-29
### Added
- Incorporated a replacement `System.IO.Packaging` that fixes some serious (but exceptional) bugs found in the WindowsBase implementation
[3.0.1]: https://github.com/dotnet/Open-XML-SDK/compare/v3.0.0...v3.0.1
[3.0.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.20.0...v3.0.0
[2.20.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.19.0...v2.20.0
[2.19.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.18.0...v2.19.0
[2.18.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.17.1...v2.18.0
[2.17.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.17.0...v2.17.1
[2.17.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.16.0...v2.17.0
[2.16.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.15.0...v2.16.0
[2.15.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.14.0...v2.15.0
[2.14.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.14.0-beta1...v2.14.0
[2.13.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.13.0...v2.13.1
[2.13.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.13.0...v2.13.0
[2.12.3]: https://github.com/dotnet/Open-XML-SDK/compare/v2.12.3...v2.12.1
[2.12.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.12.1...v2.12.0
[2.12.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.12.0...v2.11.3
[2.11.3]: https://github.com/dotnet/Open-XML-SDK/compare/v2.11.3...v2.11.2
[2.11.2]: https://github.com/dotnet/Open-XML-SDK/compare/v2.11.2...v2.11.1
[2.11.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.11.1...v2.11.0
[2.11.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.11.0...v2.10.1
[2.10.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.10.1...v2.10.0
[2.10.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.10.0...v2.9.1
[2.9.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.9.1...v2.9.0
[2.9.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.9.0...v2.8.1
[2.8.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.8.1...v2.8.0
[2.8.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.8.0...v2.7.2
[2.7.2]: https://github.com/dotnet/Open-XML-SDK/compare/v2.7.1...v2.7.2
[2.7.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.7.0...v2.7.1
[2.7.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.6.1...v2.7.0
[2.6.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.6.0...v2.6.1
[2.6.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.5.0...v2.6.0</releaseNotes>
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<tags>openxml office</tags>
<repository type="git" url="https://github.com/dotnet/Open-XML-SDK" commit="f9e6ad7524e22b6b1f932deabc9055201b7870c0" />
<dependencies>
<group targetFramework=".NETFramework3.5">
<dependency id="DocumentFormat.OpenXml.Framework" version="3.1.1" exclude="Build,Analyzers" />
</group>
<group targetFramework=".NETFramework4.0">
<dependency id="DocumentFormat.OpenXml.Framework" version="3.1.1" exclude="Build,Analyzers" />
</group>
<group targetFramework=".NETFramework4.6">
<dependency id="DocumentFormat.OpenXml.Framework" version="3.1.1" exclude="Build,Analyzers" />
</group>
<group targetFramework="net8.0">
<dependency id="DocumentFormat.OpenXml.Framework" version="3.1.1" exclude="Build,Analyzers" />
</group>
<group targetFramework=".NETStandard2.0">
<dependency id="DocumentFormat.OpenXml.Framework" version="3.1.1" exclude="Build,Analyzers" />
</group>
</dependencies>
<frameworkAssemblies>
<frameworkAssembly assemblyName="System" targetFramework=".NETFramework3.5, .NETFramework4.0, .NETFramework4.6" />
<frameworkAssembly assemblyName="System.Xml" targetFramework=".NETFramework3.5, .NETFramework4.0, .NETFramework4.6" />
<frameworkAssembly assemblyName="WindowsBase" targetFramework=".NETFramework3.5, .NETFramework4.0, .NETFramework4.6" />
</frameworkAssemblies>
</metadata>
</package>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4529957b90bd38c4f853c9e85940a305
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,122 @@
<!-- omit in toc -->
Open XML SDK
============
> [!NOTE]
>
> [v3.0.0](https://www.nuget.org/packages/DocumentFormat.OpenXml/3.0.0) refactors and addresses some technical debt while retaining source compatibility as much as possible. You should be able to update your package and recompile with limited changes. However, binary compatibility was not a goal and will break that for some changes which are documented. PRs that introduced such changes are marked with a `breaking-change` label and were added to a list to help migrating to v3.0.0.
>
> Please see the [v3.0.0 milestone](https://github.com/OfficeDev/Open-XML-SDK/milestone/1) for issues and PRs that are included. For discussions, please join us at [this issue](https://github.com/OfficeDev/Open-XML-SDK/issues/1270).
> [!IMPORTANT]
> The CI feed URL has changed as of 2 April, 2024. Please update to the new URL if using CI builds.
[![Downloads](https://img.shields.io/nuget/dt/DocumentFormat.OpenXml.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml)
[![Build Status](https://office.visualstudio.com/OC/_apis/build/status/OpenXmlSdk/OfficeDev.Open-XML-SDK?branchName=main)](https://office.visualstudio.com/OC/_build/latest?definitionId=7420&branchName=main)
[![Backend Status](https://ointprotocol.visualstudio.com/OInteropTools/_apis/build/status/OpenXML-Schemas?branchName=main)](https://ointprotocol.visualstudio.com/OInteropTools/_build/latest?definitionId=21&branchName=main)
The Open XML SDK provides tools for working with Office Word, Excel, and PowerPoint documents. It supports scenarios such as:
- High-performance generation of word-processing documents, spreadsheets, and presentations.
- Document modification, such as adding, updating, and removing content and metadata.
- Search and replace content using regular expressions.
- Splitting up (shredding) a file into multiple files, and combining multiple files into a single file.
- Updating cached data and embedded spreadsheets for charts in Word/PowerPoint.
<!-- omit in toc -->
# Table of Contents
- [Packages](#packages)
- [Daily Builds](#daily-builds)
- [Framework Support](#framework-support)
- [Known Issues](#known-issues)
- [Documentation](#documentation)
- [If You Have How-To Questions](#if-you-have-how-to-questions)
- [Related tools](#related-tools)
# Packages
The official release NuGet packages for Open XML SDK are on NuGet.org:
| Package | Download | Prerelease |
|---------|----------|------------|
| DocumentFormat.OpenXml.Framework | [![NuGet](https://img.shields.io/nuget/v/DocumentFormat.OpenXml.Framework.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml.Framework) | [![NuGet](https://img.shields.io/nuget/vpre/DocumentFormat.OpenXml.Framework.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml.Framework) |
| DocumentFormat.OpenXml | [![NuGet](https://img.shields.io/nuget/v/DocumentFormat.OpenXml.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml) | [![NuGet](https://img.shields.io/nuget/vpre/DocumentFormat.OpenXml.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml) |
| DocumentFormat.OpenXml.Linq | [![NuGet](https://img.shields.io/nuget/v/DocumentFormat.OpenXml.Linq.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml.Linq) | [![NuGet](https://img.shields.io/nuget/vpre/DocumentFormat.OpenXml.Linq.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml.Linq) |
| DocumentFormat.OpenXml.Features | [![NuGet](https://img.shields.io/nuget/v/DocumentFormat.OpenXml.Features.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml.Features) | [![NuGet](https://img.shields.io/nuget/vpre/DocumentFormat.OpenXml.Features.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml.Features) |
## Daily Builds
The NuGet package for the latest builds of the Open XML SDK is available as a custom feed on an Azure blob. Stable releases here will be mirrored onto NuGet and will be identical. You must set up a [NuGet.config](https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file) file that looks similar to this:
```xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="OpenXmlCI" value="https://ooxml.blob.core.windows.net/feed/index.json" />
</packageSources>
</configuration>
```
For latests changes, please see the [changelog](CHANGELOG.md)
## Framework Support
The package currently supports the following targets:
- .NET Framework 3.5, 4.0, 4.6
- .NET Standard 2.0
- .NET 6.0
For details on platform support, including other runtimes such as Mono and Unity, please see the docs at https://docs.microsoft.com/en-us/dotnet/standard/net-standard.
# Known Issues
- On .NET Core and .NET 5 and following, ZIP packages do not have a way to stream data. Thus, the working set can explode in certain situations. This is a [known issue](https://github.com/dotnet/runtime/issues/1544).
- On .NET Framework, an `IsolatedStorageException` may be thrown under certain circumstances. This generally occurs when manipulating a large document in an environment with an AppDomain that does not have enough evidence. A sample with a workaround is available [here](/samples/IsolatedStorageExceptionWorkaround).
# Documentation
Please see [Open XML SDK](https://learn.microsoft.com/en-us/office/open-xml/open-xml-sdk) for the official documentation.
# If you have how-to questions
- [Stack Overflow](http://stackoverflow.com) (tags: **openxml** or **openxml-sdk**)
- How-to samples:
- [Spreadsheet Samples](https://learn.microsoft.com/en-us/office/open-xml/spreadsheet/overview)
- [Presentation Samples](https://learn.microsoft.com/en-us/office/open-xml/presentation/overview)
- [Wordprocessing Samples](https://learn.microsoft.com/en-us/office/open-xml/word/overview)
# Related tools
- **[Open XML SDK 2.5 Productivity Tool](https://github.com/OfficeDev/Open-XML-SDK/releases/tag/v2.5)**: The Productivity Tool provides viewing and code generation compatible with the Open XML SDK 2.5.
- **[Open XML Powertools](https://github.com/EricWhiteDev/Open-Xml-PowerTools)**: This provides example code and guidance for implementing a wide range of Open XML scenarios.
- **[ClosedXml](https://github.com/closedxml/closedxml)**: This library provides a simplified object model on top of the OpenXml SDK for manipulating and creating Excel documents.
- **[OfficeIMO](https://github.com/EvotecIT/OfficeIMO)**: This library provides a simplified object model on top of the OpenXml SDK manipulating and creating Word documents.
- **[OpenXML-Office](https://github.com/DraviaVemal/OpenXML-Office)**: This nuget library provides a simplified object model on top of the OpenXml SDK manipulating and creating PPT and Excel documents.
- **[Serialize.OpenXml.CodeGen](https://github.com/rmboggs/Serialize.OpenXml.CodeGen)**: This is a tool that converts an OpenXml document into the .NET code required to create it.
- **[Html2OpenXml](https://github.com/onizet/html2openxml)**: This is a tool that takes HTML and converts it to an OpenXml document.
- **[DocxToSource](https://github.com/rmboggs/DocxToSource)**: This is a tool designed to be a replacement for the old OpenXML SDK Productivity Tool.
- **[OOXML Viewer](https://github.com/yuenm18/ooxml-viewer-vscode)**: This is an extension for Visual Studio Code to View and Edit the xml parts of an Office Open XML file and to view a diff with the previous version of an OOXML part when saved from an outside program. Search "OOXML" in the VS Code extensions tab or download it from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=yuenm18.ooxml-viewer)
- **[ShapeCrawler](https://github.com/ShapeCrawler/ShapeCrawler)**: This library provides a simplified object model on top of the OpenXml SDK to manipulate PowerPoint documents.
- **[OOXML Validator](https://github.com/mikeebowen/ooxml-validator-vscode)**: VS Code extension to validate Office Open XML files. Search "OOXML" in the VS Code extensions tab or download it from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=mikeebowen.ooxml-validator-vscode)
# How can I contribute?
We welcome contributions! Many people all over the world have helped make this project better.
- [Contributing](./CONTRIBUTING.md) explains what kinds of contributions we welcome
# Reporting security issues and security bugs
Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) secure@microsoft.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the [Security TechCenter](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue?rtc=1).
# .NET Foundation
The Open XML SDK is a [.NET Foundation](https://dotnetfoundation.org/projects) project.
This project has adopted the code of conduct defined by the [Contributor Covenant](https://www.contributor-covenant.org/) to clarify expected behavior in our community. For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/about/code-of-conduct).
# License
The Open XML SDK is licensed under the [MIT](./LICENSE) license.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 23953c9eb7b646042b223fb0fb1712f1
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,136 @@
fileFormatVersion: 2
guid: 4d221a477921cae4fa8d8dbde57845d8
TextureImporter:
internalIDToNameTable:
- first:
213: 6934086728263231946
second: icon_0
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: icon_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 64
height: 64
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: ac961e71423da3060800000000000000
internalID: 6934086728263231946
vertices: []
indices:
edges: []
weights: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5978743eab8953044ba814fdb5e530c4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6cabdc881115dec4082a20753de6d60a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 5de96c0ab65e86a4788f1b15caee2db3
labels:
- NuGetForUnity
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b439791ebaa8863488902523448a48cf
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ab0a22ded8e5db8409aee28037ed6522
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,553 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>DocumentFormat.OpenXml.Framework</id>
<version>3.1.1</version>
<authors>Microsoft</authors>
<license type="expression">MIT</license>
<licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
<icon>icon.png</icon>
<readme>README.md</readme>
<projectUrl>https://github.com/dotnet/Open-XML-SDK</projectUrl>
<iconUrl>https://raw.githubusercontent.com/dotnet/Open-XML-SDK/master/icon.png</iconUrl>
<description>The Open XML SDK provides tools for working with Office Word, Excel, and PowerPoint documents. It supports scenarios such as:
- High-performance generation of word-processing documents, spreadsheets, and presentations.
- Populating content in Word files from an XML data source.
- Splitting up (shredding) a Word or PowerPoint file into multiple files, and combining multiple Word/PowerPoint files into a single file.
- Extraction of data from Excel documents.
- Searching and replacing content in Word/PowerPoint using regular expressions.
- Updating cached data and embedded spreadsheets for charts in Word/PowerPoint.
- Document modification, such as removing tracked revisions or removing unacceptable content from documents.</description>
<releaseNotes># Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [3.1.1] - 2024-10-15
### Fixed
- Updated System.IO.Packaging and other dependencies (#1794, #1795, #1796, #1782, #1808)
- Fixed add c16:uniqueId to several chart complex types (#1762)
- Fixed &lt;remarks&gt; rather than &lt;remark&gt; in the documentation comments (#1775)
## [3.1.0] - 2024-07-30
### Added
- Added `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2024.PivotAutoRefresh` namespace
- Added `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2024.PivotDynamicArrays` namespace
- Added `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.DataSourceVersioning` namespace
- Added `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.ExternalCodeService` namespace
- Added `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.MsForms` namespace
- Added `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.Pivot2023Calculation` namespace
### Fixed
- Fixed issue where `OpenXmlUnknownElement` is returned instead of `CommentPropertiesExtension` (#1751)
- Fixed issue where `OpenXmlWriter` is unable to write `SharedStringTablePart` (#1755)
## [3.0.2] - 2024-03-14
### Fixed
- Fixed issue where temp files were shareable and not deleted on close (#1658)
## [3.0.1] - 2024-01-09
### Fixed
- Fixed issue where document type would not be correct unless content type was checked first (#1625)
- Added check to only seek on packages where it is supported (#1644)
- If a malformed URI is encountered, the exception is now the same as v2.x (`OpenXmlPackageException` with an inner `UriFormatException`) (#1644)
## [3.0.0] - 2023-11-15
### Added
- Packages can now be saved on .NET Core and .NET 5+ if constructed with a path or stream (#1307).
- Packages can now support malformed URIs (such as relationships with a URI such as `mailto:person@`)
- Introduce equality comparers for `OpenXmlElement` (#1476)
- `IFeatureCollection` can now be enumerated and has a helpful debug view to see what features are registered (#1452)
- Add mime types to part creation (#1488)
- `DocumentFormat.OpenXml.Office.PowerPoint.Y2023.M02.Main` namespace
- `DocumentFormat.OpenXml.Office.PowerPoint.Y2022.M03.Main` namespace
- `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021` namespace
### Changed
- When validation finds incorrect part, it will now include the relationship type rather than a class name
- `IDisposableFeature` is now a part of the framework package and is available by default on a package or part.
### Breaking Changes
- .NET Standard 1.3 is no longer a supported platform. .NET Standard 2.0 is the lowest .NET Standard supported.
- Core infrastructure is now contained in a new package DocumentFormat.OpenXml.Framework. Typed classes are still in DocumentFormat.OpenXml. This means that you may reference DocumentFormat.OpenXml and still compile the same types, but if you want a smaller package, you may rely on just the framework package.
- Changed type of `OpenXmlPackage.Package` to `DocumentFormat.OpenXml.Packaging.IPackage` instead of `System.IO.Packaging.Package` with a similar API surface
- `EnumValue&lt;T&gt;` now is used to box a struct rather than a `System.Enum`. This allows us to enable behavior on it without resorting to reflection
- Methods on parts to add child parts (i.e. `AddImagePart`) are now implemented as extension methods off of a new marker interface `ISupportedRelationship&lt;T&gt;`
- Part type info enums (i.e. `ImagePartType`) is no longer an enum, but a static class to expose well-known part types as structs. Now any method to define a new content-type/extension pair can be called with the new `PartTypeInfo` struct that will contain the necessary information.
- `OpenXmlPackage.CanSave` is now an instance property (#1307)
- Removed `OpenXmlSettings.RelationshipErrorHandlerFactory` and associated types and replaced with a built-in mechanism to enable this
- `IdPartPair` is now a readonly struct rather than a class
- Renamed `PartExtensionProvider` to `IPartExtensionFeature` and reduced its surface area to only two methods (instead of a full `Dictionary&lt;,&gt;`). The property to access this off of `OpenXmlPackage` has been removed, but may be accessed via `Features.Get&lt;IPartExtensionFeature&gt;()` if needed.
- `OpenXmlPart`/`OpenXmlContainer`/`OpenXmlPackage` and derived types now have internal constructors (these had internal abstract methods so most likely weren't subclassed externally)
- `OpenXmlElementList` is now a struct that implements `IEnumerable&lt;OpenXmlElement&gt;` and `IReadOnlyList&lt;OpenXmlElement&gt;` where available (#1429)
- Individual implementations of `OpenXmlPartReader` are available now for each package type (i.e. `WordprocessingDocumentPartReader`, `SpreadsheetDocumentPartReader`, `PresentationDocumentPartReader`), and the previous `TypedOpenXmlPartReader` has been removed. (#1403)
- Reduced unnecessary target frameworks for packages besides DocumentFormat.OpenXml.Framework (#1471)
- Changed some spelling issues for property names (#1463, #1444)
- `Model3D` now represents the modified xml element tag name `am3d.model3d` (Previously `am3d.model3D`)
- Removed `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.PivotCacheHasRichValuePivotCacheRichInfo`
- Removed `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.RichDataPivotCacheGuid`
- Removed unused `SchemaAttrAttribute` (#1316)
- Removed unused `ChildElementInfoAttribute` (#1316)
- Removed `OpenXmlSimpleType.TextValue`. This property was never meant to be used externally (#1316)
- Removed obsolete validation logic from v1 of the SDK (#1316)
- Removed obsoleted methods from 2.x (#1316)
- Removed mutable properties on OpenXmlAttribute and marked as `readonly` (#1282)
- Removed `OpenXmlPackage.Close` in favor of `Dispose` (#1373)
- Removed `OpenXmlPackage.SaveAs` in favor of `Clone` (#1376)
## [2.20.0]
### Added
- Added DocumentFormat.OpenXml.Office.Drawing.Y2022.ImageFormula namespace
- Added DocumentFormat.OpenXml.Office.Word.Y2023.WordML.Word16DU namespace
### Changed
- Marked `OpenXmlSimpleType.TextValue` as obsolete. This property was never meant to be used externally (#1284)
- Marked `OpenXmlPackage.Package` as obsolete. This will be an implementation detail in future versions and won't be accessible (#1306)
- Marked `OpenXmlPackage.Close` as obsolete. This will be removed in a later release, use Dispose instead (#1371)
- Marked `OpenXmlPackage.SaveAs` as obsolete as it will be removed in a future version (#1378)
### Fixed
- Fixed incorrect file extensions for vbaProject files (#1292)
- Fixed incorrect file extensions for ImagePart (#1305)
- Fixed incorrect casing for customXml (#1351)
- Fixed AddEmbeddedPackagePart to allow correct extensions for various content types (#1388)
## [2.19.0] - 2022-12-14
### Added
- .NET 6 target with support for trimming (#1243, #1240)
- Added DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData namespace
- Added DocumentFormat.OpenXml.Office.PowerPoint.Y2019.Main.Command namespace
- Added DocumentFormat.OpenXml.Office.PowerPoint.Y2022.Main.Command namespace
- Added Child RichDataPivotCacheGuid to DocumentFormat.OpenXml.Office2010.Excel.PivotCacheDefinition
### Fixed
- Removed reflection usage where possible (#1240)
- Fixed issue where some URIs might be changed when cloning or creating copy (#1234)
- Fixed issue in FlatOpc generation that would not read the full stream on .NET 6+ (#1232)
- Fixed issue where restored relationships wouldn't load correctly (#1207)
## [2.18.0] 2022-09-06
### Added
- Added DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021 namespace (#1196)
- Added durableId attribute to DocumentFormat.OpenXml.Wordprocessing.NumberingPictureBullet (#1196)
- Added few base classes for typed elements, parts, and packages (#1185)
### Changed
- Adjusted LICENSE.md to conform to .NET Foundation requirements (#1194)
- Miscellaneous changes for better perf for internal services
## [2.17.1] - 2022-06-28
### Removed
- Removed the preview namespace DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions because this namespace will currently create invalid documents.
### Fixed
- Restored the PowerPointCommentPart relationship to PresentationPart.
### Deprecated
- The relationship between the PowerPointCommentPart and the PresentationPart is deprecated and will be removed in a future version.
## [2.17.0] - Unreleased
### Added
- Added DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions namespace (#1151)
- Added DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotVersionInfo namespace (#1151)
### Fixed
- Moved PowerPointCommentPart relationship to SlidePart (#1137)
### Updated
- Removed public API analyzers in favor of EnablePackageValidation (#1154)
## [2.16.0] - 2022-03-14
### Added
- Added method `OpenXmlPart.UnloadRootElement` that will unload the root element if it is loaded (#1126)
### Updated
- Schema code generation was moved to the SDK project using C# code generators
Thanks to the following for their contribution:
@f1nzer
## [2.15.0] - 2021-12-16
### Added
- Added samples for strongly typed classes and Linq-to-XML in the `./samples` directory (#1101, #1087)
- Shipping additional libraries for some additional functionality in `DocumentFormat.OpenXml.Features` and `DocumentFormat.OpenXml.Linq`. See documentation in repo for additional details.
- Added extension method to support getting image part type (#1082)
- Added generated classes and `FileFormatVersions.Microsoft365` for new subscription model types and constraints (#1097).
### Fixed
- Fixed issue for changed mime type `model/gltf.binary` (#1069)
- DocumentFormat.OpenXml.Office.Drawing.ShapeTree is now available only in Office 2010 and above, not 2007.
- Correctly serialize `new CellValue(bool)` values (#1070)
- Updated known namespaces to be generated via an in-repo source generator (#1092)
- Some documentation issues around `FileFormatVersions` enum
Thanks to the following for their contributions:
@ThomasBarnekow
@stevenhansen
@JaimeStill
@jnyrup
## [2.14.0] - 2021-10-28
### Added
- Added generated classes for Office 2021 types and constraints (#1030)
- Added `Features` property to `OpenXmlPartContainer` and `OpenXmlElement` to enable a per-part or per-document state storage
- Added public constructors for `XmlPath` (#1013)
- Added parts for Rich Data types (#1002)
- Added methods to generate unique paragraph ids (#1000)
Thanks to the following for their contributions:
@rmboggs
@ThomasBarnekow
## [2.13.1] - 2021-08-17
### Fixed
- Fixed some nullability annotations that were incorrectly defined (#953, #955)
- Fixed issue that would dispose a `TextReader` when creating an `XmlReader` under certain circumstances (#940)
- Fixed a documentation type (#937)
- Fixed an issue with adding additional children to data parts (#934)
- Replaced some documentation entries that were generic values with helpful comments (#992)
- Fixed a regression in AddDataPartRelationship (#954)
Thanks to the following for their contributions:
@ThomasBarnekow
@sorensenmatias
@lklein53
@lindexi
## [2.13.0] - 2021-05-13
### Added
- Additional O19 types to match Open Specifications (#916)
- Added generated classes for Office 2019 types and constraints (#882)
- Added nullability attributes (#840, #849)
- Added overload for `OpenXmlPartReader` and `OpenXmlReader.Create(...)` to ignore whitespace (#857)
- Added `HexBinaryValue.TryGetBytes(...)` and `HexBinaryValue.Create(byte[])` to manage the encoding and decoding of bytes (#867)
- Implemented `IEquatable&lt;IdPartPair&gt;` on `IdPartPair` to fix equality implementation there and obsoleted setters (#871)
### Fixed
- Fixed serialization of `CellValue` constructors to use invariant cultures (#903)
- Fixed parsing to allow exponents for numeric cell values (#901)
- Fixed massive performance bottleneck when `UniqueAttributeValueConstraint` is involved (#924)
### Deprecated
- Deprecated Office2013.Word.Person.Contact property. It no longer persists and will be removed in a future version (#912)
Thanks to the following for their contributions:
@lklein53
@igitur
## [2.12.3] - 2021-02-24
### Fixed
- Fixed issue where `CellValue` may validate incorrectly for boolean values (#890)
## [2.12.2] - 2021-02-16
### Fixed
- Fixed issue where `OpenSettings.RelationshipErrorHandlerFactory` creates invalid XML if the resulting URI is smaller than the input (#883)
## [2.12.1] - 2021-01-11
### Fixed
- Fixed bug where properties on `OpenXmlCompositeElement` instances could not be set to null to remove element (#850)
- Fixed `OpenXmlElement.RawOuterXml` to properly set null values without throwing (#818)
- Allow rewriting of all malformed URIs regardless of target value (#835)
## [2.12.0] - 2020-12-09
### Added
- Added `OpenSettings.RelationshipErrorHandlerFactory` to provide a way to handle URIs that break parsing documents with malformed links (#793)
- Added `OpenXmlCompositeElement.AddChild(OpenXmlElement)` to add children in the correct order per schema (#774)
- Added `SmartTagClean` and `SmartTagId` in place of `SmtClean` and `SmtId` (#747)
- Added `OpenXmlValidator.Validate(..., CancellationToken)` overrides to allow easier cancellation of long running validation on .NET 4.0+ (#773)
- Added overloads for `CellValue` to take `decimal`, `double`, and `int`, as well as convenience methods to parse them (#782)
- Added validation for `CellType` for numbers and date formats (#782)
- Added `OpenXmlReader.GetLineInfo()` to retrieve `IXmlLineInfo` of the underlying reader if available (#804)
### Fixed
- Fixed exception that would be thrown if attempting to save a document as FlatOPC if it contains SVG files (#822)
- Added `SchemaAttrAttribute` attributes back for backwards compatibility (#825)
### Removed
- Removed explicit reference to `System.IO.Packaging` on .NET 4.6 builds (#774)
## [2.11.3] - 2020-07-17
### Fixed
- Fixed massive performance bottleneck when `IndexReferenceConstraint` and `ReferenceExistConstraint` are involved (#763)
- Fixed `CellValue` to only include three most signficant digits on second fractions to correct issue loading dates (#741)
- Fixed a couple of validation indexing errors that might cause erroneous validation errors (#767)
- Updated internal validation system to not use recursion, allowing for better short-circuiting (#766)
## [2.11.2] - 2020-07-10
### Fixed
- Fixed broken source link (#749)
- Ensured compilation is deterministic (#749)
- Removed extra file in NuGet package (#749)
## [2.11.1] - 2020-07-10
### Fixed
- Ensure .NET Framework builds pass PEVerify (#744)
- `OpenXmlPartContainer.DeletePart` no longer throws an exception if there isn't a match for the identifier given (#740)
- Mark obsolete members to not show up with Intellisense (#745)
- Fixed issue with `AttributeRequiredConditionToValue` semantic constraint where validation could fail on correct input (#746)
## [2.11.0] - 2020-05-21
### Added
- Added `FileFormatVersions.2019` enum (#695)
- Added `ChartSpace` and chart elements for the new 2016 namespaces. This allows the connecting pieces for building a chart part with chart styles like "Sunburst" (#687).
- Added `OpenXmlElementFunctionalExtensions.With(...)` extension methods, which offer flexible means for constructing `OpenXmlElement` instances in the context of pure functional transformations (#679)
- Added minimum Office versions for enum types and values (#707)
- Added additional `CompatSettingNameValues` values: `UseWord2013TrackBottomHyphenation`, `AllowHyphenationAtTrackBottom`, and `AllowTextAfterFloatingTableBreak` (#706)
- Added gfxdata attribue to Arc, Curve, Line, PolyLine, Group, Image, Oval, Rect, and RoundRect shape complex types per MS-OI29500 2.1.1783-1799 (#709)
- Added `OpenXmlPartContainer.TryGetPartById` to enable child part retrieval without exception if it does not exist (#714)
- Added `OpenXmlPackage.StrictRelationshipFound` property that indicates whether this package contains Transitional relationships converted from Strict (#716)
### Fixed
- Custom derived parts did not inherit known parts from its parent, causing failure when adding parts (#722)
### Changed
- Marked the property setters in `OpenXmlAttribute` as obsolete as structs should not have mutable state (#698)
## [2.10.1] - 2020-02-28
### Fixed
- Ensured attributes are available when `OpenXmlElement` is initialized with outer XML (#684, #692)
- Some documentation errors (#681)
- Removed state that made it non-thread safe to validate elements under certain conditions (#686)
- Correctly inserts strongly-typed elements before known elements that are not strongly-typed (#690)
## [2.10.0] - 2020-01-10
### Added
- Added initial Office 2016 support, including `FileFormatVersion.Office2016`, `ExtendedChartPart` and other new schema elements (#586)
- Added .NET Standard 2.0 target (#587)
- Included symbols support for debugging (#650)
- Exposed `IXmlNamespaceResolver` from `XmlPath` instead of formatted list of strings to expose namespace/prefix mapping (#536)
- Implemented `IComparable&lt;T&gt;` and `IEquatable&lt;T&gt;` on `OpenXmlComparableSimpleValue` to allow comparisons without boxing (#550)
- Added `OpenXmlPackage.RootPart` to easily access the root part on any package (#661)
### Changed
- Updated to v4.7.0 of System.IO.Packaging which brings in a number of perf fixes (#660)
- Consolidated data for element children/properties to reduce duplication (#540, #547, #548)
- Replaced opaque binary data for element children constraints with declarative model (#603)
- A number of performance fixes to minimize allocations where possible
- 20% size reduction from 5.5mb to 4.3mb
- The validation subsystem went through a drastic redesign. This may cause changes in what errors are reported.
### Fixed
- Fixed some documentation inconsistencies (#582)
- Fixed `ToFlatOpcDocument`, `ToFlatOpcString`, `FromFlatOpcDocument`, and `FromFlatOpcString` to correctly process Alternative Format Import Parts, or "altChunk parts" (#659)
## [2.9.1] - 2019-03-13
### Changed
- Added a workaround for a .NET Native compiler issue that doesn't support calling `Marshal.SizeOf&lt;T&gt;` with a struct that contains auto-implemented properties (#569)
- Fixed a documentation error (#528)
## [2.9.0] - 2018-06-08
### Added
- `ListValue` now implements `IEnumerable&lt;T&gt;` (#385)
- Added a `WebExtension.Frozen` and obsoleted misspelled `Fronzen` property (#460)
- Added an `OpenXmlPackage.CanSave` property that indicates whether a platform supports saving without closing the package (#468)
- Simple types (except `EnumValue` and `ListValue`) now implement `IComparable&lt;T&gt;` and `IEquatable&lt;T&gt;` (#487)
### Changed
- Removed state that was carried in validators that would hold onto packages when not in use (#390)
- `EnumSimpleType` parsing was improved and uses less allocations and caches for future use (#408)
- Fixed a number of spelling mistakes in documentation (#462)
- When calling `OpenXmlPackage.Save` on .NET Framework, the package is now flushed to the stream (#468)
- Fixed race condition while performing strict translation of attributes (#480)
- Schema data for validation uses a more compact format leading to a reduction in dll size and performance improvements for loading (#482, #483)
- A number of APIs are marked as obsolete as they have simple workarounds and will be removed in the next major change
- Fixed some constraint values for validation that contained Office 2007, even when it was only supported in later versions
- Updated `System.IO.Packaging` to 4.5.0 which fixes some issues on Xamarin platforms as well as minimizes dependencies on .NET Framework
## [2.8.1] - 2018-01-03
### Changed
- Corrected package license file reference to show updated MIT License
## [2.8.0] - 2017-12-28
### Added
- Default runtime directive for better .NET Native support.
### Changed
- Fixed part saving to be encoded with UTF8 but no byte order mark. This caused some renderers to not be able to open the generated document.
- Fixed exceptions thrown when errors are encountered while opening packages to be consistent across platforms.
- Fixed issue on Mono platforms using System.IO.Packaging NuGet package (Xamarin, etc) when creating a document.
- Fixed manual saving of a package when autosave is false.
- Fixed schema constraint data and standardized serialization across platforms.
- Upgraded to `System.IO.Packaging` version 4.4.0 which fixes some consistency with .NET Framework in opening packages.
## [2.7.2] - 2017-06-06
### Added
- Package now supports .NET 3.5 and .NET 4.0 in addition to .NET Standard 1.3 and .NET Framework 4.6
### Changed
- Fixed issue where assembly version wasn't set in assembly.
## [2.7.1] - 2017-01-31
### Changed
- Fixed crash when validation is invoked on .NET Framework with strong-naming enforced.
## [2.7.0] - 2017-01-24
### Added
- SDK now supports .NET Standard 1.3
### Changed
- Moved to using System.IO.Packaging from dotnet/corefx for .NET Standard 1.3 and WindowsBase for .NET 4.5.
- Cleaned up project build system to use .NET CLI.
## [2.6.1] - 2016-01-15
### Added
- Added hundreds of XUnit tests. There are now a total of 1333 tests. They take about 20 minutes to run, so be patient.
## [2.6.0] - 2015-06-29
### Added
- Incorporated a replacement `System.IO.Packaging` that fixes some serious (but exceptional) bugs found in the WindowsBase implementation
[3.0.1]: https://github.com/dotnet/Open-XML-SDK/compare/v3.0.0...v3.0.1
[3.0.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.20.0...v3.0.0
[2.20.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.19.0...v2.20.0
[2.19.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.18.0...v2.19.0
[2.18.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.17.1...v2.18.0
[2.17.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.17.0...v2.17.1
[2.17.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.16.0...v2.17.0
[2.16.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.15.0...v2.16.0
[2.15.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.14.0...v2.15.0
[2.14.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.14.0-beta1...v2.14.0
[2.13.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.13.0...v2.13.1
[2.13.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.13.0...v2.13.0
[2.12.3]: https://github.com/dotnet/Open-XML-SDK/compare/v2.12.3...v2.12.1
[2.12.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.12.1...v2.12.0
[2.12.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.12.0...v2.11.3
[2.11.3]: https://github.com/dotnet/Open-XML-SDK/compare/v2.11.3...v2.11.2
[2.11.2]: https://github.com/dotnet/Open-XML-SDK/compare/v2.11.2...v2.11.1
[2.11.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.11.1...v2.11.0
[2.11.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.11.0...v2.10.1
[2.10.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.10.1...v2.10.0
[2.10.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.10.0...v2.9.1
[2.9.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.9.1...v2.9.0
[2.9.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.9.0...v2.8.1
[2.8.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.8.1...v2.8.0
[2.8.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.8.0...v2.7.2
[2.7.2]: https://github.com/dotnet/Open-XML-SDK/compare/v2.7.1...v2.7.2
[2.7.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.7.0...v2.7.1
[2.7.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.6.1...v2.7.0
[2.6.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.6.0...v2.6.1
[2.6.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.5.0...v2.6.0</releaseNotes>
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<tags>openxml office</tags>
<repository type="git" url="https://github.com/dotnet/Open-XML-SDK" commit="f9e6ad7524e22b6b1f932deabc9055201b7870c0" />
<dependencies>
<group targetFramework=".NETFramework3.5" />
<group targetFramework=".NETFramework4.0" />
<group targetFramework=".NETFramework4.6" />
<group targetFramework="net6.0">
<dependency id="System.IO.Packaging" version="8.0.1" exclude="Build,Analyzers" />
</group>
<group targetFramework="net8.0">
<dependency id="System.IO.Packaging" version="8.0.1" exclude="Build,Analyzers" />
</group>
<group targetFramework=".NETStandard2.0">
<dependency id="System.IO.Packaging" version="8.0.1" exclude="Build,Analyzers" />
</group>
</dependencies>
<frameworkAssemblies>
<frameworkAssembly assemblyName="System" targetFramework=".NETFramework3.5, .NETFramework4.0, .NETFramework4.6" />
<frameworkAssembly assemblyName="System.Xml" targetFramework=".NETFramework3.5, .NETFramework4.0, .NETFramework4.6" />
<frameworkAssembly assemblyName="WindowsBase" targetFramework=".NETFramework3.5, .NETFramework4.0, .NETFramework4.6" />
</frameworkAssemblies>
</metadata>
</package>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 26788ae187e0ecd4db028cb43a5bedb4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,122 @@
<!-- omit in toc -->
Open XML SDK
============
> [!NOTE]
>
> [v3.0.0](https://www.nuget.org/packages/DocumentFormat.OpenXml/3.0.0) refactors and addresses some technical debt while retaining source compatibility as much as possible. You should be able to update your package and recompile with limited changes. However, binary compatibility was not a goal and will break that for some changes which are documented. PRs that introduced such changes are marked with a `breaking-change` label and were added to a list to help migrating to v3.0.0.
>
> Please see the [v3.0.0 milestone](https://github.com/OfficeDev/Open-XML-SDK/milestone/1) for issues and PRs that are included. For discussions, please join us at [this issue](https://github.com/OfficeDev/Open-XML-SDK/issues/1270).
> [!IMPORTANT]
> The CI feed URL has changed as of 2 April, 2024. Please update to the new URL if using CI builds.
[![Downloads](https://img.shields.io/nuget/dt/DocumentFormat.OpenXml.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml)
[![Build Status](https://office.visualstudio.com/OC/_apis/build/status/OpenXmlSdk/OfficeDev.Open-XML-SDK?branchName=main)](https://office.visualstudio.com/OC/_build/latest?definitionId=7420&branchName=main)
[![Backend Status](https://ointprotocol.visualstudio.com/OInteropTools/_apis/build/status/OpenXML-Schemas?branchName=main)](https://ointprotocol.visualstudio.com/OInteropTools/_build/latest?definitionId=21&branchName=main)
The Open XML SDK provides tools for working with Office Word, Excel, and PowerPoint documents. It supports scenarios such as:
- High-performance generation of word-processing documents, spreadsheets, and presentations.
- Document modification, such as adding, updating, and removing content and metadata.
- Search and replace content using regular expressions.
- Splitting up (shredding) a file into multiple files, and combining multiple files into a single file.
- Updating cached data and embedded spreadsheets for charts in Word/PowerPoint.
<!-- omit in toc -->
# Table of Contents
- [Packages](#packages)
- [Daily Builds](#daily-builds)
- [Framework Support](#framework-support)
- [Known Issues](#known-issues)
- [Documentation](#documentation)
- [If You Have How-To Questions](#if-you-have-how-to-questions)
- [Related tools](#related-tools)
# Packages
The official release NuGet packages for Open XML SDK are on NuGet.org:
| Package | Download | Prerelease |
|---------|----------|------------|
| DocumentFormat.OpenXml.Framework | [![NuGet](https://img.shields.io/nuget/v/DocumentFormat.OpenXml.Framework.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml.Framework) | [![NuGet](https://img.shields.io/nuget/vpre/DocumentFormat.OpenXml.Framework.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml.Framework) |
| DocumentFormat.OpenXml | [![NuGet](https://img.shields.io/nuget/v/DocumentFormat.OpenXml.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml) | [![NuGet](https://img.shields.io/nuget/vpre/DocumentFormat.OpenXml.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml) |
| DocumentFormat.OpenXml.Linq | [![NuGet](https://img.shields.io/nuget/v/DocumentFormat.OpenXml.Linq.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml.Linq) | [![NuGet](https://img.shields.io/nuget/vpre/DocumentFormat.OpenXml.Linq.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml.Linq) |
| DocumentFormat.OpenXml.Features | [![NuGet](https://img.shields.io/nuget/v/DocumentFormat.OpenXml.Features.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml.Features) | [![NuGet](https://img.shields.io/nuget/vpre/DocumentFormat.OpenXml.Features.svg)](https://www.nuget.org/packages/DocumentFormat.OpenXml.Features) |
## Daily Builds
The NuGet package for the latest builds of the Open XML SDK is available as a custom feed on an Azure blob. Stable releases here will be mirrored onto NuGet and will be identical. You must set up a [NuGet.config](https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file) file that looks similar to this:
```xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="OpenXmlCI" value="https://ooxml.blob.core.windows.net/feed/index.json" />
</packageSources>
</configuration>
```
For latests changes, please see the [changelog](CHANGELOG.md)
## Framework Support
The package currently supports the following targets:
- .NET Framework 3.5, 4.0, 4.6
- .NET Standard 2.0
- .NET 6.0
For details on platform support, including other runtimes such as Mono and Unity, please see the docs at https://docs.microsoft.com/en-us/dotnet/standard/net-standard.
# Known Issues
- On .NET Core and .NET 5 and following, ZIP packages do not have a way to stream data. Thus, the working set can explode in certain situations. This is a [known issue](https://github.com/dotnet/runtime/issues/1544).
- On .NET Framework, an `IsolatedStorageException` may be thrown under certain circumstances. This generally occurs when manipulating a large document in an environment with an AppDomain that does not have enough evidence. A sample with a workaround is available [here](/samples/IsolatedStorageExceptionWorkaround).
# Documentation
Please see [Open XML SDK](https://learn.microsoft.com/en-us/office/open-xml/open-xml-sdk) for the official documentation.
# If you have how-to questions
- [Stack Overflow](http://stackoverflow.com) (tags: **openxml** or **openxml-sdk**)
- How-to samples:
- [Spreadsheet Samples](https://learn.microsoft.com/en-us/office/open-xml/spreadsheet/overview)
- [Presentation Samples](https://learn.microsoft.com/en-us/office/open-xml/presentation/overview)
- [Wordprocessing Samples](https://learn.microsoft.com/en-us/office/open-xml/word/overview)
# Related tools
- **[Open XML SDK 2.5 Productivity Tool](https://github.com/OfficeDev/Open-XML-SDK/releases/tag/v2.5)**: The Productivity Tool provides viewing and code generation compatible with the Open XML SDK 2.5.
- **[Open XML Powertools](https://github.com/EricWhiteDev/Open-Xml-PowerTools)**: This provides example code and guidance for implementing a wide range of Open XML scenarios.
- **[ClosedXml](https://github.com/closedxml/closedxml)**: This library provides a simplified object model on top of the OpenXml SDK for manipulating and creating Excel documents.
- **[OfficeIMO](https://github.com/EvotecIT/OfficeIMO)**: This library provides a simplified object model on top of the OpenXml SDK manipulating and creating Word documents.
- **[OpenXML-Office](https://github.com/DraviaVemal/OpenXML-Office)**: This nuget library provides a simplified object model on top of the OpenXml SDK manipulating and creating PPT and Excel documents.
- **[Serialize.OpenXml.CodeGen](https://github.com/rmboggs/Serialize.OpenXml.CodeGen)**: This is a tool that converts an OpenXml document into the .NET code required to create it.
- **[Html2OpenXml](https://github.com/onizet/html2openxml)**: This is a tool that takes HTML and converts it to an OpenXml document.
- **[DocxToSource](https://github.com/rmboggs/DocxToSource)**: This is a tool designed to be a replacement for the old OpenXML SDK Productivity Tool.
- **[OOXML Viewer](https://github.com/yuenm18/ooxml-viewer-vscode)**: This is an extension for Visual Studio Code to View and Edit the xml parts of an Office Open XML file and to view a diff with the previous version of an OOXML part when saved from an outside program. Search "OOXML" in the VS Code extensions tab or download it from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=yuenm18.ooxml-viewer)
- **[ShapeCrawler](https://github.com/ShapeCrawler/ShapeCrawler)**: This library provides a simplified object model on top of the OpenXml SDK to manipulate PowerPoint documents.
- **[OOXML Validator](https://github.com/mikeebowen/ooxml-validator-vscode)**: VS Code extension to validate Office Open XML files. Search "OOXML" in the VS Code extensions tab or download it from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=mikeebowen.ooxml-validator-vscode)
# How can I contribute?
We welcome contributions! Many people all over the world have helped make this project better.
- [Contributing](./CONTRIBUTING.md) explains what kinds of contributions we welcome
# Reporting security issues and security bugs
Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) secure@microsoft.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the [Security TechCenter](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue?rtc=1).
# .NET Foundation
The Open XML SDK is a [.NET Foundation](https://dotnetfoundation.org/projects) project.
This project has adopted the code of conduct defined by the [Contributor Covenant](https://www.contributor-covenant.org/) to clarify expected behavior in our community. For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/about/code-of-conduct).
# License
The Open XML SDK is licensed under the [MIT](./LICENSE) license.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e13e86285dd3b284286fa900247fbba7
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,136 @@
fileFormatVersion: 2
guid: a4531285b05ca44479cec8551be8d60e
TextureImporter:
internalIDToNameTable:
- first:
213: 6934086728263231946
second: icon_0
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: icon_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 64
height: 64
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: ac961e71423da3060800000000000000
internalID: 6934086728263231946
vertices: []
indices:
edges: []
weights: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 739fff5df34d1714683aa63379f74997
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6c63198c399464243987b4586fc98461
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: a0cbd15f97881bd46ba09a5e4a93acbe
labels:
- NuGetForUnity
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1da19ad0276dc204386cbf0ea8b7024d
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0acfa03825090d64dbd22356207f452a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>ExcelNumberFormat</id>
<version>1.1.0</version>
<authors>ExcelNumberFormat developers</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
<icon>icon.png</icon>
<projectUrl>https://github.com/andersnm/ExcelNumberFormat</projectUrl>
<description>.NET library to parse ECMA-376 number format strings and format values like Excel and other spreadsheet softwares.</description>
<tags>excel,formatting,numfmt,formatcode</tags>
<dependencies>
<group targetFramework=".NETFramework2.0" />
<group targetFramework=".NETStandard1.0">
<dependency id="NETStandard.Library" version="1.6.1" exclude="Build,Analyzers" />
</group>
<group targetFramework=".NETStandard2.0" />
</dependencies>
</metadata>
</package>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e6320f78470d22e4b9a693da7ebc309e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,136 @@
fileFormatVersion: 2
guid: 8224defad2c47c14196d6792621a6bf5
TextureImporter:
internalIDToNameTable:
- first:
213: 6934086728263231946
second: icon_0
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: icon_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 128
height: 128
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: ac961e71423da3060800000000000000
internalID: 6934086728263231946
vertices: []
indices:
edges: []
weights: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1176c2a1cc46a2744aa436d4690f3629
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e57f5ceee7b62e749b59c981c9832788
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 544e4365c22154e45b61e103730a310d
labels:
- NuGetForUnity
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,110 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>ExcelNumberFormat</name>
</assembly>
<members>
<member name="M:ExcelNumberFormat.CompatibleConvert.ToString(System.Object,System.IFormatProvider)">
<summary>
A backward-compatible version of <see cref="M:System.Convert.ToString(System.Object,System.IFormatProvider)"/>.
Starting from .net Core 3.0 the default precision used for formatting floating point number has changed.
To always format numbers the same way, no matter what version of runtime is used, we specify the precision explicitly.
</summary>
</member>
<member name="T:ExcelNumberFormat.ExcelDateTime">
<summary>
Similar to regular .NET DateTime, but also supports 0/1 1900 and 29/2 1900.
</summary>
</member>
<member name="P:ExcelNumberFormat.ExcelDateTime.AdjustedDateTime">
<summary>
The closest .NET DateTime to the specified excel date.
</summary>
</member>
<member name="P:ExcelNumberFormat.ExcelDateTime.AdjustDaysPost">
<summary>
Number of days to adjust by in post.
</summary>
</member>
<member name="M:ExcelNumberFormat.ExcelDateTime.#ctor(System.Double,System.Boolean)">
<summary>
Constructs a new ExcelDateTime from a numeric value.
</summary>
</member>
<member name="M:ExcelNumberFormat.ExcelDateTime.#ctor(System.DateTime)">
<summary>
Wraps a regular .NET datetime.
</summary>
<param name="value"></param>
</member>
<member name="M:ExcelNumberFormat.Formatter.FormatThousands(System.String,System.Boolean,System.Boolean,System.Collections.Generic.List{System.String},System.Globalization.CultureInfo,System.Text.StringBuilder)">
<summary>
Prints right-aligned, left-padded integer before the decimal separator. With optional most-significant zero.
</summary>
</member>
<member name="M:ExcelNumberFormat.Formatter.FormatDecimals(System.String,System.Collections.Generic.List{System.String},System.Text.StringBuilder)">
<summary>
Prints left-aligned, right-padded integer after the decimal separator. Does not print significant zero.
</summary>
</member>
<member name="M:ExcelNumberFormat.Formatter.FormatDenominator(System.String,System.Collections.Generic.List{System.String},System.Text.StringBuilder)">
<summary>
Prints left-aligned, left-padded fraction integer denominator.
Assumes tokens contain only placeholders, valueString has fewer or equal number of digits as tokens.
</summary>
</member>
<member name="M:ExcelNumberFormat.Formatter.GetLeftAlignedValueDigit(System.String,System.String,System.Int32,System.Boolean,System.Int32@)">
<summary>
Returns the first digit from valueString. If the token is '?'
returns the first significant digit from valueString, or '0' if there are no significant digits.
The out valueIndex parameter contains the offset to the next digit in valueString.
</summary>
</member>
<member name="T:ExcelNumberFormat.NumberFormat">
<summary>
Parse ECMA-376 number format strings and format values like Excel and other spreadsheet softwares.
</summary>
</member>
<member name="M:ExcelNumberFormat.NumberFormat.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:ExcelNumberFormat.NumberFormat"/> class.
</summary>
<param name="formatString">The number format string.</param>
</member>
<member name="P:ExcelNumberFormat.NumberFormat.IsValid">
<summary>
Gets a value indicating whether the number format string is valid.
</summary>
</member>
<member name="P:ExcelNumberFormat.NumberFormat.FormatString">
<summary>
Gets the number format string.
</summary>
</member>
<member name="P:ExcelNumberFormat.NumberFormat.IsDateTimeFormat">
<summary>
Gets a value indicating whether the format represents a DateTime
</summary>
</member>
<member name="P:ExcelNumberFormat.NumberFormat.IsTimeSpanFormat">
<summary>
Gets a value indicating whether the format represents a TimeSpan
</summary>
</member>
<member name="M:ExcelNumberFormat.NumberFormat.Format(System.Object,System.Globalization.CultureInfo,System.Boolean)">
<summary>
Formats a value with this number format in a specified culture.
</summary>
<param name="value">The value to format.</param>
<param name="culture">The culture to use for formatting.</param>
<param name="isDate1904">If false, numeric dates start on January 0 1900 and include February 29 1900 - like Excel on PC. If true, numeric dates start on January 1 1904 - like Excel on Mac.</param>
<returns>The formatted string.</returns>
</member>
<member name="M:ExcelNumberFormat.Parser.ParseNumberTokens(System.Collections.Generic.List{System.String},System.Int32,System.Collections.Generic.List{System.String}@,System.Boolean@,System.Collections.Generic.List{System.String}@)">
<summary>
Parses as many placeholders and literals needed to format a number with optional decimals.
Returns number of tokens parsed, or 0 if the tokens didn't form a number.
</summary>
</member>
</members>
</doc>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4a5c4cf341a98204dae0bb00a3207b7b
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0ed91761905bea14ea8f64d6cf8ca14a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>RBush.Signed</id>
<version>4.0.0</version>
<title>RBush</title>
<authors>viceroypenguin</authors>
<license type="expression">MIT</license>
<licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
<readme>readme.md</readme>
<description>Spatial Index data structure; used to make it easier to find data points on a two dimensional plane.</description>
<copyright>Copyright © 2017-2024 Turning Code, LLC (and others)</copyright>
<tags>.NET R-Tree Algorithm tree search spatial index</tags>
<repository type="git" url="https://github.com/viceroypenguin/RBush" branch="refs/heads/master" commit="b8690322abac35d835baa2fdca4a3918ed77a910" />
<dependencies>
<group targetFramework=".NETFramework4.7" />
<group targetFramework="net8.0" />
<group targetFramework=".NETStandard2.0" />
</dependencies>
</metadata>
</package>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 61dba2885a45fb743b14d62910960c8d
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2b31c974c339e9547bfc82b136b6f6fb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 88578e3db5b93e54d91a52d038afd034
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: bc831b832c743eb428d80f84265ada77
labels:
- NuGetForUnity
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,907 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>RBush</name>
</assembly>
<members>
<member name="M:RBush.ArgumentNullException.ThrowIfNull(System.Object,System.String)">
<summary>Throws an <see cref="T:RBush.ArgumentNullException"/> if <paramref name="argument"/> is null.</summary>
<param name="argument">The reference type argument to validate as non-null.</param>
<param name="paramName">The name of the parameter with which <paramref name="argument"/> corresponds.</param>
</member>
<member name="T:RBush.Envelope">
<summary>
A bounding envelope, used to identify the bounds of of the points within
a particular node.
</summary>
<param name="MinX">The minimum X value of the bounding box.</param>
<param name="MinY">The minimum Y value of the bounding box.</param>
<param name="MaxX">The maximum X value of the bounding box.</param>
<param name="MaxY">The maximum Y value of the bounding box.</param>
</member>
<member name="M:RBush.Envelope.#ctor(System.Double,System.Double,System.Double,System.Double)">
<summary>
A bounding envelope, used to identify the bounds of of the points within
a particular node.
</summary>
<param name="MinX">The minimum X value of the bounding box.</param>
<param name="MinY">The minimum Y value of the bounding box.</param>
<param name="MaxX">The maximum X value of the bounding box.</param>
<param name="MaxY">The maximum Y value of the bounding box.</param>
</member>
<member name="P:RBush.Envelope.MinX">
<summary>The minimum X value of the bounding box.</summary>
</member>
<member name="P:RBush.Envelope.MinY">
<summary>The minimum Y value of the bounding box.</summary>
</member>
<member name="P:RBush.Envelope.MaxX">
<summary>The maximum X value of the bounding box.</summary>
</member>
<member name="P:RBush.Envelope.MaxY">
<summary>The maximum Y value of the bounding box.</summary>
</member>
<member name="P:RBush.Envelope.Area">
<summary>
The calculated area of the bounding box.
</summary>
</member>
<member name="P:RBush.Envelope.Margin">
<summary>
Half of the linear perimeter of the bounding box
</summary>
</member>
<member name="M:RBush.Envelope.Extend(RBush.Envelope@)">
<summary>
Extends a bounding box to include another bounding box
</summary>
<param name="other">The other bounding box</param>
<returns>A new bounding box that encloses both bounding boxes.</returns>
<remarks>Does not affect the current bounding box.</remarks>
</member>
<member name="M:RBush.Envelope.Intersection(RBush.Envelope@)">
<summary>
Intersects a bounding box to only include the common area
of both bounding boxes
</summary>
<param name="other">The other bounding box</param>
<returns>A new bounding box that is the intersection of both bounding boxes.</returns>
<remarks>Does not affect the current bounding box.</remarks>
</member>
<member name="M:RBush.Envelope.Contains(RBush.Envelope@)">
<summary>
Determines whether <paramref name="other"/> is contained
within this bounding box.
</summary>
<param name="other">The other bounding box</param>
<returns>
<see langword="true" /> if <paramref name="other"/> is
completely contained within this bounding box;
<see langword="false" /> otherwise.
</returns>
</member>
<member name="M:RBush.Envelope.Intersects(RBush.Envelope@)">
<summary>
Determines whether <paramref name="other"/> intersects
this bounding box.
</summary>
<param name="other">The other bounding box</param>
<returns>
<see langword="true" /> if <paramref name="other"/> is
intersects this bounding box in any way;
<see langword="false" /> otherwise.
</returns>
</member>
<member name="P:RBush.Envelope.InfiniteBounds">
<summary>
A bounding box that contains the entire 2-d plane.
</summary>
</member>
<member name="P:RBush.Envelope.EmptyBounds">
<summary>
An empty bounding box.
</summary>
</member>
<member name="T:RBush.ISpatialData">
<summary>
Exposes an <see cref="P:RBush.ISpatialData.Envelope"/> that describes the
bounding box of current object.
</summary>
</member>
<member name="P:RBush.ISpatialData.Envelope">
<summary>
The bounding box of the current object.
</summary>
</member>
<member name="T:RBush.ISpatialDatabase`1">
<summary>
Provides the base interface for the abstraction for
an updateable data store of elements on a 2-d plane.
</summary>
<typeparam name="T">The type of elements in the index.</typeparam>
</member>
<member name="M:RBush.ISpatialDatabase`1.Insert(`0)">
<summary>
Adds an object to the <see cref="T:RBush.ISpatialDatabase`1"/>
</summary>
<param name="item">
The object to be added to <see cref="T:RBush.ISpatialDatabase`1"/>.
</param>
</member>
<member name="M:RBush.ISpatialDatabase`1.Delete(`0)">
<summary>
Removes an object from the <see cref="T:RBush.ISpatialDatabase`1"/>.
</summary>
<param name="item">
The object to be removed from the <see cref="T:RBush.ISpatialDatabase`1"/>.
</param>
<returns><see langword="bool" /> indicating whether the item was removed.</returns>
</member>
<member name="M:RBush.ISpatialDatabase`1.Clear">
<summary>
Removes all elements from the <see cref="T:RBush.ISpatialDatabase`1"/>.
</summary>
</member>
<member name="M:RBush.ISpatialDatabase`1.BulkLoad(System.Collections.Generic.IEnumerable{`0})">
<summary>
Adds all of the elements from the collection to the <see cref="T:RBush.ISpatialDatabase`1"/>.
</summary>
<param name="items">
A collection of items to add to the <see cref="T:RBush.ISpatialDatabase`1"/>.
</param>
<remarks>
For multiple items, this method is more performant than
adding items individually via <see cref="M:RBush.ISpatialDatabase`1.Insert(`0)"/>.
</remarks>
</member>
<member name="T:RBush.ISpatialIndex`1">
<summary>
Provides the base interface for the abstraction of
an index to find points within a bounding box.
</summary>
<typeparam name="T">The type of elements in the index.</typeparam>
</member>
<member name="M:RBush.ISpatialIndex`1.Search">
<summary>
Get all of the elements within the current <see cref="T:RBush.ISpatialIndex`1"/>.
</summary>
<returns>
A list of every element contained in the <see cref="T:RBush.ISpatialIndex`1"/>.
</returns>
</member>
<member name="M:RBush.ISpatialIndex`1.Search(RBush.Envelope@)">
<summary>
Get all of the elements from this <see cref="T:RBush.ISpatialIndex`1"/>
within the <paramref name="boundingBox"/> bounding box.
</summary>
<param name="boundingBox">The area for which to find elements.</param>
<returns>
A list of the points that are within the bounding box
from this <see cref="T:RBush.ISpatialIndex`1"/>.
</returns>
</member>
<member name="T:RBush.RBush`1">
<summary>
An implementation of the R-tree data structure for 2-d spatial indexing.
</summary>
<typeparam name="T">The type of elements in the index.</typeparam>
</member>
<member name="P:RBush.RBush`1.Root">
<summary>
The root of the R-tree.
</summary>
</member>
<member name="P:RBush.RBush`1.Envelope">
<summary>
The bounding box of all elements currently in the data structure.
</summary>
</member>
<member name="M:RBush.RBush`1.#ctor">
<summary>
Initializes a new instance of the <see cref="T:RBush.RBush`1"/> that is
empty and has the default tree width and default <see cref="T:System.Collections.Generic.IEqualityComparer`1"/>.
</summary>
</member>
<member name="M:RBush.RBush`1.#ctor(System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:RBush.RBush`1"/> that is
empty and has a custom max number of elements per tree node
and default <see cref="T:System.Collections.Generic.IEqualityComparer`1"/>.
</summary>
<param name="maxEntries"></param>
</member>
<member name="M:RBush.RBush`1.#ctor(System.Int32,System.Collections.Generic.IEqualityComparer{`0})">
<summary>
Initializes a new instance of the <see cref="T:RBush.RBush`1"/> that is
empty and has a custom max number of elements per tree node
and a custom <see cref="T:System.Collections.Generic.IEqualityComparer`1"/>.
</summary>
<param name="maxEntries"></param>
<param name="comparer"></param>
</member>
<member name="P:RBush.RBush`1.Count">
<summary>
Gets the number of items currently stored in the <see cref="T:RBush.RBush`1"/>
</summary>
</member>
<member name="M:RBush.RBush`1.Clear">
<summary>
Removes all elements from the <see cref="T:RBush.RBush`1"/>.
</summary>
</member>
<member name="M:RBush.RBush`1.Search">
<summary>
Get all of the elements within the current <see cref="T:RBush.RBush`1"/>.
</summary>
<returns>
A list of every element contained in the <see cref="T:RBush.RBush`1"/>.
</returns>
</member>
<member name="M:RBush.RBush`1.Search(RBush.Envelope@)">
<summary>
Get all of the elements from this <see cref="T:RBush.RBush`1"/>
within the <paramref name="boundingBox"/> bounding box.
</summary>
<param name="boundingBox">The area for which to find elements.</param>
<returns>
A list of the points that are within the bounding box
from this <see cref="T:RBush.RBush`1"/>.
</returns>
</member>
<member name="M:RBush.RBush`1.Insert(`0)">
<summary>
Adds an object to the <see cref="T:RBush.RBush`1"/>
</summary>
<param name="item">
The object to be added to <see cref="T:RBush.RBush`1"/>.
</param>
</member>
<member name="M:RBush.RBush`1.BulkLoad(System.Collections.Generic.IEnumerable{`0})">
<summary>
Adds all of the elements from the collection to the <see cref="T:RBush.RBush`1"/>.
</summary>
<param name="items">
A collection of items to add to the <see cref="T:RBush.RBush`1"/>.
</param>
<remarks>
For multiple items, this method is more performant than
adding items individually via <see cref="M:RBush.RBush`1.Insert(`0)"/>.
</remarks>
</member>
<member name="M:RBush.RBush`1.Delete(`0)">
<summary>
Removes an object from the <see cref="T:RBush.RBush`1"/>.
</summary>
<param name="item">
The object to be removed from the <see cref="T:RBush.RBush`1"/>.
</param>
<returns><see langword="bool" /> indicating whether the item was deleted.</returns>
</member>
<member name="T:RBush.RBush`1.Node">
<summary>
A node in an R-tree data structure containing other nodes
or elements of type <typeparamref name="T"/>.
</summary>
</member>
<member name="P:RBush.RBush`1.Node.Children">
<summary>
The descendent nodes or elements of a <see cref="T:RBush.RBush`1.Node"/>
</summary>
</member>
<member name="P:RBush.RBush`1.Node.Height">
<summary>
The current height of a <see cref="T:RBush.RBush`1.Node"/>.
</summary>
<remarks>
A node containing individual elements has a <see cref="P:RBush.RBush`1.Node.Height"/> of 1.
</remarks>
</member>
<member name="P:RBush.RBush`1.Node.IsLeaf">
<summary>
Determines whether the current <see cref="T:RBush.RBush`1.Node"/> is a leaf node.
</summary>
</member>
<member name="P:RBush.RBush`1.Node.Envelope">
<summary>
Gets the bounding box of all of the descendents of the
current <see cref="T:RBush.RBush`1.Node"/>.
</summary>
</member>
<member name="T:RBush.RBushExtensions">
<summary>
Extension methods for the <see cref="T:RBush.RBush`1"/> object.
</summary>
</member>
<member name="M:RBush.RBushExtensions.Knn``1(RBush.ISpatialIndex{``0},System.Int32,System.Double,System.Double,System.Nullable{System.Double},System.Func{``0,System.Boolean})">
<summary>
Get the <paramref name="k"/> nearest neighbors to a specific point.
</summary>
<typeparam name="T">The type of elements in the index.</typeparam>
<param name="tree">An index of points.</param>
<param name="k">The number of points to retrieve.</param>
<param name="x">The x-coordinate of the center point.</param>
<param name="y">The y-coordinate of the center point.</param>
<param name="maxDistance">The maximum distance of points to be considered "near"; optional.</param>
<param name="predicate">A function to test each element for a condition; optional.</param>
<returns>The list of up to <paramref name="k"/> elements nearest to the given point.</returns>
</member>
<member name="M:RBush.RBushExtensions.DistanceTo(RBush.Envelope@,System.Double,System.Double)">
<summary>
Calculates the distance from the borders of an <see cref="T:RBush.Envelope"/>
to a given point.
</summary>
<param name="envelope">The <see cref="T:RBush.Envelope"/> from which to find the distance</param>
<param name="x">The x-coordinate of the given point</param>
<param name="y">The y-coordinate of the given point</param>
<returns>The calculated Euclidean shortest distance from the <paramref name="envelope"/> to a given point.</returns>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.AllowNullAttribute">
<summary>
Specifies that null is allowed as an input even if the corresponding type disallows it.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DisallowNullAttribute">
<summary>
Specifies that null is disallowed as an input even if the corresponding type allows it.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute">
<summary>
Applied to a method that will never return under any circumstance.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute">
<summary>
Specifies that the method will not return if the associated Boolean parameter is passed the specified value.
</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.#ctor(System.Boolean)">
<summary>
Initializes the attribute with the specified parameter value.
</summary>
<param name="parameterValue">
The condition parameter value. Code after the method will be considered unreachable
by diagnostics if the argument to the associated parameter matches this value.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.ParameterValue">
<summary>
Gets the condition parameter value.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.ExperimentalAttribute">
<summary>
Indicates that an API is experimental and it may change in the future.
</summary>
<remarks>
This attribute allows call sites to be flagged with a diagnostic that indicates that an experimental
feature is used. Authors can use this attribute to ship preview features in their assemblies.
</remarks>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.ExperimentalAttribute"/> class,
specifying the ID that the compiler will use when reporting a use of the API the attribute applies to.
</summary>
<param name="diagnosticId">The ID that the compiler will use when reporting a use of the API the attribute applies to.</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.DiagnosticId">
<summary>
Gets the ID that the compiler will use when reporting a use of the API the attribute applies to.
</summary>
<value>The unique diagnostic ID.</value>
<remarks>
The diagnostic ID is shown in build output for warnings and errors.
<para>This property represents the unique ID that can be used to suppress the warnings or errors, if needed.</para>
</remarks>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.UrlFormat">
<summary>
Gets or sets the URL for corresponding documentation.
The API accepts a format string instead of an actual URL, creating a generic URL that includes the diagnostic ID.
</summary>
<value>The format string that represents a URL to corresponding documentation.</value>
<remarks>An example format string is <c>https://contoso.com/obsoletion-warnings/{0}</c>.</remarks>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MaybeNullAttribute">
<summary>
Specifies that an output may be null even if the corresponding type disallows it.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute">
<summary>
Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue"/>, the parameter may be null even if the corresponding type disallows it.
</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.#ctor(System.Boolean)">
<summary>
Initializes the attribute with the specified return value condition.
</summary>
<param name="returnValue">The return value condition. If the method returns this value, the associated parameter may be null.</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue">
<summary>
Gets the return value condition.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute">
<summary>
Specifies that the method or property will ensure that the listed field and property members have not-null values.
</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String)">
<summary>
Initializes the attribute with a field or property member.
</summary>
<param name="member">The field or property member that is promised to be not-null.</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String[])">
<summary>
Initializes the attribute with the list of field and property members.
</summary>
<param name="members">The list of field and property members that are promised to be not-null.</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.Members">
<summary>
Gets field or property member names.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute">
<summary>
Specifies that the method or property will ensure that the listed field and property
members have not-null values when returning with the specified return value condition.
</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String)">
<summary>
Initializes the attribute with the specified return value condition and a field or property member.
</summary>
<param name="returnValue">The return value condition. If the method returns this value, the associated parameter will not be null.</param>
<param name="member">The field or property member that is promised to be not-null.</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String[])">
<summary>
Initializes the attribute with the specified return value condition and list of field and property members.
</summary>
<param name="returnValue">The return value condition. If the method returns this value, the associated parameter will not be null.</param>
<param name="members">The list of field and property members that are promised to be not-null.</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.ReturnValue">
<summary>
Gets the return value condition.
</summary>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.Members">
<summary>
Gets field or property member names.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullAttribute">
<summary>
Specifies that an output will not be null even if the corresponding type allows it.
Specifies that an input argument was not null when the call returns.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute">
<summary>
Specifies that the output will be non-null if the named parameter is non-null.
</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.#ctor(System.String)">
<summary>
Initializes the attribute with the associated parameter name.
</summary>
<param name="parameterName">The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null.</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.ParameterName">
<summary>
Gets the associated parameter name.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute">
<summary>
Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue"/>, the parameter will not be null even if the corresponding type allows it.
</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.#ctor(System.Boolean)">
<summary>
Initializes the attribute with the specified return value condition.
</summary>
<param name="returnValue">The return value condition. If the method returns this value, the associated parameter will not be null.</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.SetsRequiredMembersAttribute">
<summary>
Specifies that this constructor sets all required members for the current type,
and callers do not need to set any required members themselves.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute">
<summary>
Specifies the syntax used in a string.
</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.#ctor(System.String)">
<summary>
Initializes the <see cref="T:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute"/> with the identifier of the syntax used.
</summary>
<param name="syntax">The syntax identifier.</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.#ctor(System.String,System.Object[])">
<summary>Initializes the <see cref="T:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute"/> with the identifier of the syntax used.</summary>
<param name="syntax">The syntax identifier.</param>
<param name="arguments">Optional arguments associated with the specific syntax employed.</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Syntax">
<summary>Gets the identifier of the syntax used.</summary>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Arguments">
<summary>Optional arguments associated with the specific syntax employed.</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.CompositeFormat">
<summary>The syntax identifier for strings containing composite formats for string formatting.</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.DateOnlyFormat">
<summary>The syntax identifier for strings containing date format specifiers.</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.DateTimeFormat">
<summary>The syntax identifier for strings containing date and time format specifiers.</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.EnumFormat">
<summary>The syntax identifier for strings containing <see cref="T:System.Enum"/> format specifiers.</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.GuidFormat">
<summary>The syntax identifier for strings containing <see cref="T:System.Guid"/> format specifiers.</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Json">
<summary>The syntax identifier for strings containing JavaScript Object Notation (JSON).</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.NumericFormat">
<summary>The syntax identifier for strings containing numeric format specifiers.</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Regex">
<summary>The syntax identifier for strings containing regular expressions.</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.TimeOnlyFormat">
<summary>The syntax identifier for strings containing time format specifiers.</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.TimeSpanFormat">
<summary>The syntax identifier for strings containing <see cref="T:System.TimeSpan"/> format specifiers.</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Uri">
<summary>The syntax identifier for strings containing URIs.</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Xml">
<summary>The syntax identifier for strings containing XML.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.UnscopedRefAttribute">
<summary>
Used to indicate a byref escapes and is not scoped.
</summary>
<remarks>
<para>
There are several cases where the C# compiler treats a <see langword="ref"/> as implicitly
<see langword="scoped"/> - where the compiler does not allow the <see langword="ref"/> to escape the method.
</para>
<para>
For example:
<list type="number">
<item><see langword="this"/> for <see langword="struct"/> instance methods.</item>
<item><see langword="ref"/> parameters that refer to <see langword="ref"/> <see langword="struct"/> types.</item>
<item><see langword="out"/> parameters.</item>
</list>
</para>
<para>
This attribute is used in those instances where the <see langword="ref"/> should be allowed to escape.
</para>
<para>
Applying this attribute, in any form, has impact on consumers of the applicable API. It is necessary for
API authors to understand the lifetime implications of applying this attribute and how it may impact their users.
</para>
</remarks>
</member>
<member name="T:System.Index">
<summary>Represent a type can be used to index a collection either from the start or the end.</summary>
<remarks>
Index is used by the C# compiler to support the new index syntax
<code>
int[] someArray = new int[5] { 1, 2, 3, 4, 5 } ;
int lastElement = someArray[^1]; // lastElement = 5
</code>
</remarks>
</member>
<member name="M:System.Index.#ctor(System.Int32,System.Boolean)">
<summary>Construct an Index using a value and indicating if the index is from the start or from the end.</summary>
<param name="value">The index value. it has to be zero or positive number.</param>
<param name="fromEnd">Indicating if the index is from the start or from the end.</param>
<remarks>
If the Index constructed from the end, index value 1 means pointing at the last element and index value 0 means pointing at beyond last element.
</remarks>
</member>
<member name="P:System.Index.Start">
<summary>Create an Index pointing at first element.</summary>
</member>
<member name="P:System.Index.End">
<summary>Create an Index pointing at beyond last element.</summary>
</member>
<member name="M:System.Index.FromStart(System.Int32)">
<summary>Create an Index from the start at the position indicated by the value.</summary>
<param name="value">The index value from the start.</param>
</member>
<member name="M:System.Index.FromEnd(System.Int32)">
<summary>Create an Index from the end at the position indicated by the value.</summary>
<param name="value">The index value from the end.</param>
</member>
<member name="P:System.Index.Value">
<summary>Returns the index value.</summary>
</member>
<member name="P:System.Index.IsFromEnd">
<summary>Indicates whether the index is from the start or the end.</summary>
</member>
<member name="M:System.Index.GetOffset(System.Int32)">
<summary>Calculate the offset from the start using the giving collection length.</summary>
<param name="length">The length of the collection that the Index will be used with. length has to be a positive value</param>
<remarks>
For performance reason, we don't validate the input length parameter and the returned offset value against negative values.
we don't validate either the returned offset is greater than the input length.
It is expected Index will be used with collections which always have non negative length/count. If the returned offset is negative and
then used to index a collection will get out of range exception which will be same affect as the validation.
</remarks>
</member>
<member name="M:System.Index.Equals(System.Object)">
<summary>Indicates whether the current Index object is equal to another object of the same type.</summary>
<param name="value">An object to compare with this object</param>
</member>
<member name="M:System.Index.Equals(System.Index)">
<summary>Indicates whether the current Index object is equal to another Index object.</summary>
<param name="other">An object to compare with this object</param>
</member>
<member name="M:System.Index.GetHashCode">
<summary>Returns the hash code for this instance.</summary>
</member>
<member name="M:System.Index.op_Implicit(System.Int32)~System.Index">
<summary>Converts integer number to an Index.</summary>
</member>
<member name="M:System.Index.ToString">
<summary>Converts the value of the current Index object to its equivalent string representation.</summary>
</member>
<member name="T:System.Range">
<summary>Represent a range has start and end indexes.</summary>
<remarks>
Range is used by the C# compiler to support the range syntax.
<code>
int[] someArray = new int[5] { 1, 2, 3, 4, 5 };
int[] subArray1 = someArray[0..2]; // { 1, 2 }
int[] subArray2 = someArray[1..^0]; // { 2, 3, 4, 5 }
</code>
</remarks>
</member>
<member name="P:System.Range.Start">
<summary>Represent the inclusive start index of the Range.</summary>
</member>
<member name="P:System.Range.End">
<summary>Represent the exclusive end index of the Range.</summary>
</member>
<member name="M:System.Range.#ctor(System.Index,System.Index)">
<summary>Construct a Range object using the start and end indexes.</summary>
<param name="start">Represent the inclusive start index of the range.</param>
<param name="end">Represent the exclusive end index of the range.</param>
</member>
<member name="M:System.Range.Equals(System.Object)">
<summary>Indicates whether the current Range object is equal to another object of the same type.</summary>
<param name="value">An object to compare with this object</param>
</member>
<member name="M:System.Range.Equals(System.Range)">
<summary>Indicates whether the current Range object is equal to another Range object.</summary>
<param name="other">An object to compare with this object</param>
</member>
<member name="M:System.Range.GetHashCode">
<summary>Returns the hash code for this instance.</summary>
</member>
<member name="M:System.Range.ToString">
<summary>Converts the value of the current Range object to its equivalent string representation.</summary>
</member>
<member name="M:System.Range.StartAt(System.Index)">
<summary>Create a Range object starting from start index to the end of the collection.</summary>
</member>
<member name="M:System.Range.EndAt(System.Index)">
<summary>Create a Range object starting from first element in the collection to the end Index.</summary>
</member>
<member name="P:System.Range.All">
<summary>Create a Range object starting from first element to the end.</summary>
</member>
<member name="M:System.Range.GetOffsetAndLength(System.Int32)">
<summary>Calculate the start offset and length of range object using a collection length.</summary>
<param name="length">The length of the collection that the range will be used with. length has to be a positive value.</param>
<remarks>
For performance reason, we don't validate the input length parameter against negative values.
It is expected Range will be used with collections which always have non negative length/count.
We validate the range is inside the length scope though.
</remarks>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute">
<summary>
Indicates the type of the async method builder that should be used by a language compiler to
build the attributed async method or to build the attributed type when used as the return type
of an async method.
</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute.#ctor(System.Type)">
<summary>Initializes the <see cref="T:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute"/>.</summary>
<param name="builderType">The <see cref="T:System.Type"/> of the associated builder.</param>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute.BuilderType">
<summary>Gets the <see cref="T:System.Type"/> of the associated builder.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerArgumentExpressionAttribute">
<summary>
An attribute that allows parameters to receive the expression of other parameters.
</summary>
</member>
<member name="M:System.Runtime.CompilerServices.CallerArgumentExpressionAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.CallerArgumentExpressionAttribute"/> class.
</summary>
<param name="parameterName">The condition parameter value.</param>
</member>
<member name="P:System.Runtime.CompilerServices.CallerArgumentExpressionAttribute.ParameterName">
<summary>
Gets the parameter name the expression is retrieved from.
</summary>
</member>
<member name="M:System.Runtime.CompilerServices.CollectionBuilderAttribute.#ctor(System.Type,System.String)">
<summary>
Initialize the attribute to refer to the <paramref name="methodName"/> method on the <paramref name="builderType"/> type.
</summary>
<param name="builderType">The type of the builder to use to construct the collection.</param>
<param name="methodName">The name of the method on the builder to use to construct the collection.</param>
<remarks>
<paramref name="methodName"/> must refer to a static method that accepts a single parameter of
type <see cref="!:ReadOnlySpan&lt;T&gt;"/> and returns an instance of the collection being built containing
a copy of the data from that span. In future releases of .NET, additional patterns may be supported.
</remarks>
</member>
<member name="P:System.Runtime.CompilerServices.CollectionBuilderAttribute.BuilderType">
<summary>
Gets the type of the builder to use to construct the collection.
</summary>
</member>
<member name="P:System.Runtime.CompilerServices.CollectionBuilderAttribute.MethodName">
<summary>
Gets the name of the method on the builder to use to construct the collection.
</summary>
<remarks>
This should match the metadata name of the target method.
For example, this might be ".ctor" if targeting the type's constructor.
</remarks>
</member>
<member name="T:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute">
<summary>
Indicates that compiler support for a particular feature is required for the location where this attribute is applied.
</summary>
</member>
<member name="M:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.#ctor(System.String)">
<summary>
Creates a new instance of the <see cref="T:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute"/> type.
</summary>
<param name="featureName">The name of the feature to indicate.</param>
</member>
<member name="P:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.FeatureName">
<summary>
The name of the compiler feature.
</summary>
</member>
<member name="P:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.IsOptional">
<summary>
If true, the compiler can choose to allow access to the location where this attribute is applied if it does not understand <see cref="P:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.FeatureName"/>.
</summary>
</member>
<member name="F:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.RefStructs">
<summary>
The <see cref="P:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.FeatureName"/> used for the ref structs C# feature.
</summary>
</member>
<member name="F:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.RequiredMembers">
<summary>
The <see cref="P:System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.FeatureName"/> used for the required members C# feature.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute">
<summary>
Indicates which arguments to a method involving an interpolated string handler should be passed to that handler.
</summary>
</member>
<member name="M:System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute"/> class.
</summary>
<param name="argument">The name of the argument that should be passed to the handler.</param>
<remarks><see langword="null"/> may be used as the name of the receiver in an instance method.</remarks>
</member>
<member name="M:System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute.#ctor(System.String[])">
<summary>
Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute"/> class.
</summary>
<param name="arguments">The names of the arguments that should be passed to the handler.</param>
<remarks><see langword="null"/> may be used as the name of the receiver in an instance method.</remarks>
</member>
<member name="P:System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute.Arguments">
<summary>
Gets the names of the arguments that should be passed to the handler.
</summary>
<remarks><see langword="null"/> may be used as the name of the receiver in an instance method.</remarks>
</member>
<member name="T:System.Runtime.CompilerServices.InterpolatedStringHandlerAttribute">
<summary>
Indicates the attributed type is to be used as an interpolated string handler.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.IsExternalInit">
<summary>
Reserved to be used by the compiler for tracking metadata.
This class should not be used by developers in source code.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.ModuleInitializerAttribute">
<summary>
Used to indicate to the compiler that a method should be called
in its containing module's initializer.
</summary>
<remarks>
When one or more valid methods
with this attribute are found in a compilation, the compiler will
emit a module initializer which calls each of the attributed methods.
Certain requirements are imposed on any method targeted with this attribute:
- The method must be `static`.
- The method must be an ordinary member method, as opposed to a property accessor, constructor, local function, etc.
- The method must be parameterless.
- The method must return `void`.
- The method must not be generic or be contained in a generic type.
- The method's effective accessibility must be `internal` or `public`.
The specification for module initializers in the .NET runtime can be found here:
https://github.com/dotnet/runtime/blob/main/docs/design/specs/Ecma-335-Augments.md#module-initializer
</remarks>
</member>
<member name="T:System.Runtime.CompilerServices.RequiredMemberAttribute">
<summary>
Specifies that a type has required members or that a member is required.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.RequiresLocationAttribute">
<summary>
Reserved for use by a compiler for tracking metadata.
This attribute should not be used by developers in source code.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.SkipLocalsInitAttribute">
<summary>
Used to indicate to the compiler that the <c>.locals init</c> flag should not be set in method headers.
</summary>
</member>
<member name="M:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.#ctor">
<summary>
Initializes a new instance of the <see cref="T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute"/> class.
</summary>
</member>
<member name="M:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute"/> class with the specified message.
</summary>
<param name="message">An optional message associated with this attribute instance.</param>
</member>
<member name="P:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.Message">
<summary>
Returns the optional message associated with this attribute instance.
</summary>
</member>
<member name="P:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.Url">
<summary>
Returns the optional URL associated with this attribute instance.
</summary>
</member>
</members>
</doc>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4b76db0b2ded8f74596f9c4d51979c6d
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,150 @@
RBush
=====
RBush is a high-performance .NET library for 2D **spatial indexing** of points and rectangles.
It's based on an optimized **R-tree** data structure with **bulk insertion** support.
*Spatial index* is a special data structure for points and rectangles
that allows you to perform queries like "all items within this bounding box" very efficiently
(e.g. hundreds of times faster than looping over all items).
It's most commonly used in maps and data visualizations.
This code has been copied over from the Javascript [RBush](https://github.com/mourner/rbush) library.
[![Build status](https://github.com/viceroypenguin/RBush/actions/workflows/build.yml/badge.svg)](https://github.com/viceroypenguin/RBush/actions)
[![License](https://img.shields.io/github/license/viceroypenguin/RBush)](license.txt)
## Install
Install with Nuget (`Install-Package RBush`).
## Usage
### Creating a Tree
First, define the data item class to implement `ISpatialData`. Then the class can be used as such:
```csharp
class Point : ISpatialData
{
public Point(Envelope envelope) =>
_envelope = envelope;
private readonly Envelope _envelope;
public public ref readonly Envelope Envelope => _envelope;
}
var tree = new RBush<Point>()
```
An optional argument (`maxEntries`) to the constructor defines the maximum number
of entries in a tree node. `9` (used by default) is a reasonable choice for most
applications. Higher value means faster insertion and slower search, and vice versa.
```csharp
var tree = new RBush<Point>(maxEntries: 16)
```
### Adding Data
Insert an item:
```csharp
var item = new Point(
new Envelope(
MinX: 0,
MinY: 0,
MaxX: 0,
MaxY: 0));
tree.Insert(item);
```
### Bulk-Inserting Data
Bulk-insert the given data into the tree:
```csharp
var points = new List<Point>();
tree.BulkLoad(points);
```
Bulk insertion is usually ~2-3 times faster than inserting items one by one.
After bulk loading (bulk insertion into an empty tree),
subsequent query performance is also ~20-30% better.
Note that when you do bulk insertion into an existing tree,
it bulk-loads the given data into a separate tree
and inserts the smaller tree into the larger tree.
This means that bulk insertion works very well for clustered data
(where items in one update are close to each other),
but makes query performance worse if the data is scattered.
### Search
```csharp
var result = tree.Search(
new Envelope
(
minX: 40,
minY: 20,
maxX: 80,
maxY: 70
);
```
Returns an `IEnumerable<T>` of data items (points or rectangles) that the given bounding box intersects.
```csharp
var allItems = tree.Search();
```
Returns all items of the tree.
### Removing Data
#### Remove a previously inserted item:
```csharp
tree.Delete(item);
```
Unless provided an `IComparer<T>`, RBush uses `EqualityComparer<T>.Default`
to select the item. If the item being passed in is not the same reference
value, ensure that the class supports `EqualityComparer<T>.Default`
equality testing.
#### Remove all items:
```csharp
tree.Clear();
```
## Credit
This code was adapted from a Javascript library called [RBush](https://github.com/mourner/rbush). The only
changes made were to adapt coding styles and preferences.
## Algorithms Used
* single insertion: non-recursive R-tree insertion with overlap minimizing split routine from R\*-tree (split is very effective in JS, while other R\*-tree modifications like reinsertion on overflow and overlap minimizing subtree search are too slow and not worth it)
* single deletion: non-recursive R-tree deletion using depth-first tree traversal with free-at-empty strategy (entries in underflowed nodes are not reinserted, instead underflowed nodes are kept in the tree and deleted only when empty, which is a good compromise of query vs removal performance)
* bulk loading: OMT algorithm (Overlap Minimizing Top-down Bulk Loading) combined with FloydRivest selection algorithm
* bulk insertion: STLT algorithm (Small-Tree-Large-Tree)
* search: standard non-recursive R-tree search
## Papers
* [R-trees: a Dynamic Index Structure For Spatial Searching](http://www-db.deis.unibo.it/courses/SI-LS/papers/Gut84.pdf)
* [The R*-tree: An Efficient and Robust Access Method for Points and Rectangles+](http://dbs.mathematik.uni-marburg.de/publications/myPapers/1990/BKSS90.pdf)
* [OMT: Overlap Minimizing Top-down Bulk Loading Algorithm for R-tree](http://ftp.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-74/files/FORUM_18.pdf)
* [Bulk Insertions into R-Trees Using the Small-Tree-Large-Tree Approach](http://www.cs.arizona.edu/~bkmoon/papers/dke06-bulk.pdf)
* [R-Trees: Theory and Applications (book)](http://www.apress.com/9781852339777)
## Development
Clone the repository and open `RBush.sln` in Visual Studio.
## Compatibility
RBush should run on any .NET system that supports .NET Standard 1.2 (.NET Framework 4.5.1 or later; .NET Core 1.0 or later).

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 51f58fe6849016b439cf6b61451fb0d3
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 355b5fd9af0599c49b4f13d91e358127
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>SixLabors.Fonts</id>
<version>1.0.0</version>
<authors>Six Labors and contributors</authors>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<license type="expression">Apache-2.0</license>
<licenseUrl>https://licenses.nuget.org/Apache-2.0</licenseUrl>
<icon>sixlabors.fonts.128.png</icon>
<projectUrl>https://github.com/SixLabors/Fonts</projectUrl>
<description>A cross-platform library for loading and laying out fonts for processing and measuring; written in C#</description>
<copyright>Copyright © Six Labors</copyright>
<tags>font truetype opentype woff woff2</tags>
<repository type="git" url="https://github.com/SixLabors/Fonts" commit="32bef42997adb10268369ca149777f00e4241ce9" />
<dependencies>
<group targetFramework=".NETCoreApp3.1" />
<group targetFramework=".NETStandard2.0">
<dependency id="System.Buffers" version="4.5.1" exclude="Build,Analyzers" />
<dependency id="System.Memory" version="4.5.4" exclude="Build,Analyzers" />
<dependency id="System.Numerics.Vectors" version="4.5.0" exclude="Build,Analyzers" />
<dependency id="System.Runtime.CompilerServices.Unsafe" version="4.7.0" exclude="Build,Analyzers" />
</group>
<group targetFramework=".NETStandard2.1">
<dependency id="System.Runtime.CompilerServices.Unsafe" version="4.7.0" exclude="Build,Analyzers" />
</group>
</dependencies>
</metadata>
</package>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a5c20281fe45f3b4082c411c402ee328
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b682e70f1ae8964468334a41e1af0053
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ac5c37ac8911a6649bab0cc219a5369f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 68c8fe8eb1e0dab488a842123ee978bb
labels:
- NuGetForUnity
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a48f70af37adb604b98c20c54c7128a0
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -0,0 +1,136 @@
fileFormatVersion: 2
guid: d86bfabd2afc38444ba196475a5ab68b
TextureImporter:
internalIDToNameTable:
- first:
213: 471046327715530374
second: sixlabors.fonts.128_0
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: sixlabors.fonts.128_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 128
height: 128
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 6868c3ca32e798600800000000000000
internalID: 471046327715530374
vertices: []
indices:
edges: []
weights: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8c1839d7ee4622d439393176894d0d61
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More